0

我试过这段代码。540 是盒子最左边的 x 值,3 是盒子最左边的 y 值,262 - 宽度,23 - 我要计算白色/黑色像素比率的区域的高度。我真正想做的是检测特定区域中的白色/黑色像素比的数量。我已经计算了每个单元格(我要指定的区域)的坐标并尝试使用此代码。但是计数错误。

请问我可以对这个问题有一个想法吗?

我真的被我最后一年的项目困在这里了。

     CvSize cvSize = cvSize(img.width(), img.height());

     IplImage image = cvCreateImage(cvSize, IPL_DEPTH_8U, 1);
     IplImage image2 = cvCreateImage(cvSize, IPL_DEPTH_8U, 3);

     cvCvtColor(image2, image, CV_RGB2GRAY);
     cvSetImageROI(image2, cvRect(540,3,262,23));
     //IplImage image2 = cvCreateImage(cvSize, IPL_DEPTH_8U, 3);

    //
     //cvCvtColor(arg0, arg1, arg2)
    // cvCvtColor(image2, image, CV_RGB2GRAY);      
     //cvThreshold(image, image, 128, 255, CV_THRESH_BINARY);





    CvLineIterator iterator = new CvLineIterator();
    double sum = 0, green_sum = 0, red_sum = 0;
    CvPoint p2 =  new CvPoint(802,3);
    CvPoint p1 =  new CvPoint(540,26);

    int lineCount = cvInitLineIterator(image2, p1, p2, iterator, 8, 0 );



         for (int i = 0; i < lineCount; i++)  {
             sum += iterator.ptr().get() & 0xFF;
         }
          System.out.println("sum................"+sum);        
         CV_NEXT_LINE_POINT(iterator);

    }


}

它给出的结果为总和.............0.0

我真的坚持这一点..请您为这个问题提供任何解决方案

4

1 回答 1

0

在循环内移动CV_NEXT_LINE_POINT(iterator);线。for然后它应该工作。

于 2014-03-16T01:09:47.580 回答