2013-10-03 82 views
0

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

我可以请有一个想法,这个问题请..

我真的坚持在这里与我的最后一年的项目。

 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

我已经真正套牢this..can请你给这个任何解决方案问题请

回答

0

for循环内移动CV_NEXT_LINE_POINT(iterator);行。那么它应该工作。

相关问题