0
我正在寫一個IOS應用程序,它決定矩形中的顏色強度。我的測量是計算紅色矩形區域落在黑色背景頂部的白紙時的亮度值。顯示是在iphone 6垂直舉行,強度測量是在xcode的調試窗口中看到。當我在黑色背景中放置白紙時,強度值約爲30,表示強度計算的位置可能表示黑色區域。當我將手機靠近白紙時,白紙位於手機底部附近,圖片被放大,它的值接近200,這很有意義。你能告訴我我做錯了什麼嗎?下面的代碼是寫在視圖 - 控制時,Xcode 8.2.1IOS Opencv顏色值和位置不匹配
- (void)processImage:(cv::Mat&)image
cv::Mat curFrame = image
cv::rectangle(curFrame, cvPoint(180+15, 300-15),cv::Scalar(0,0,255, 255),5);
uchar intensity = curFrame.at<uchar>(cvPoint(180, 300));
int intensityvalue = 255;
intensityvalue = (int) intensity;
NSLog (@"intensity: %d ", intensityvalue);
對不起手機水平不是垂直舉行 – jay
也是在這個例子中,180是垂直高度y,300是水平高度x。我知道opencv顛倒強度(y,x)。 – jay
爲什麼在curFrame.at(cvPoint(180,300))''中使用'uchar'?由於你的curFrame的類型是BGRA,你應該用相應的類型來替換'uchar'。有關詳細信息,請參見[this](http://stackoverflow.com/questions/7899108/opencv-get-pixel-channel-value-from-mat-image)。或者你可以分割'curFrame'的通道並在藍色通道上使用'uchar'。 –