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'。 –