那麼,我是openCV和圖像處理領域的新手,我絕對需要幫助。我需要獲取Mat的每個像素值。此圖像由網絡攝像頭捕獲(實時)。 我嘗試了一些解決方案,從一些人的問題,但它不是在我的項目上工作。 這是我的一些代碼:如何在OpenCV中使用網絡攝像頭獲取Mat圖像的像素值
Mat blackWhite;
Mat binary;
Mat distanceTr;
cvtColor(frame, blackWhite, CV_BGR2GRAY);
GaussianBlur(blackWhite, blackWhite, Size(15,15), 6.5, 6.5);
threshold(blackWhite, binary, 80, 255, CV_THRESH_BINARY);
Mat invBinary = Scalar(255) - binary;
distanceTransform(invBinary, distanceTr, CV_DIST_L2,3);
我的像素值訪問,我做了這個:
for(int i = 0; i < distanceTr.rows; i++)
{
for(int j = 0; j < distanceTr.cols; j++)
{
if(distanceTr.at<uchar>(0,0) == 0)
{
cout << 1;
}
}
}
對於網絡攝像頭秀,我用
imshow("Project", distanceTr);
據據我所知,distanceTr是一個灰度圖像,所以它是一個1通道圖像。基於一些答案,我嘗試了.at <>但它不工作:( 我正在做一個測試用例,如果(0,0)像素是黑色的,它將打印1.我得到的是未處理的異常錯誤。 你能給任何幫助,好嗎?
非常感謝你。 (對不起,我英文不好)
'distanceTrandform'的輸出圖像類型爲'CV_32FC1',因此可能您應該做這個:'if(distanceTr.at(0,0)== 0)cout << 1' –
sgarizvi
@ sgar91好的,非常感謝。現在正在工作。 :) 我在哪裏可以得到什麼類型的圖像給出什麼樣的輸出信息?像這種情況一樣,distanceTransform生成CV_32FC1。 – user3567271
爲什麼你在循環中一遍又一遍地檢查同一個位置(0,0)?沒有任何意義。 – berak