iOS OpenCV颜色值和位置不匹配



我正在编写一个iOS应用,该应用决定矩形中的颜色强度。我的测量是计算红色矩形区域的强度值,当它落在黑色背景顶部的白皮书中。该显示在iPhone 6垂直持有,并且在Xcode的调试窗口中可以看到强度测量。当我将白皮书放在黑色背景中时,强度的值约为30,说强度计算的位置可能表明黑色区域。当我将手机移近白皮书时,这样的白皮书就在手机的底部附近,并且图片扩大了,它的值接近200,这很有意义。你能告诉我我做错了什么。以下代码写在ViewController,Xcode 8.2.1

中。
- (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);

如果您只需要强度,则可以尝试:

- (void)processImage:(cv::Mat&)image{
     cv::Mat curFrame = image // why don't you use image directly?
     cv::Mat gray;
     // convert to gray scale, make sure that your curFrame is RGBA or BGRA
     cv::cvtColor(curFrame,gray,cv::CV_RGBA2GRAY); 
     int intensity = gray.at<uchar>(cvPoint(180, 300));
     NSLog (@"intensity: %d ", intensity);
     // draw the rectangle after you already extract the intensity
     // otherwise it may interfere with your sample
     cv::rectangle(curFrame, cvPoint(180+15, 300-15),cv::Scalar(0,0,255, 255),5);
}

最新更新