2014-10-22 1 views
-1

Я довольно новичок в OpenCV, так что несите меня. Я запускаю Mac Mini с OSX 10.8. У меня есть программа, которая распознает цвета и отображает их в двоичном изображении (черно-белое). Тем не менее, я хочу сохранить количество белых пикселей в виде целого числа (или float и т. Д.) Для сравнения с другим количеством пикселей. Как я могу это сделать? Вот мой текущий код:OpenCV C++ Mat to Integer

#include <iostream> 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/core/core.hpp" 

using namespace cv; 
using namespace std; 

int main(int argc, char** argv) 
{ 
    VideoCapture cap(0); //capture the video from webcam 

    if (!cap.isOpened()) // if not success, exit program 
    { 
     cout << "Cannot open the web cam" << endl; 
     return -1; 
    } 

    namedWindow("HSVLeftRed", CV_WINDOW_AUTOSIZE); 
    namedWindow("HSVLeftGreen", CV_WINDOW_AUTOSIZE); 


    while (true) { 

     Mat image; 
     cap.read(image); 
     Mat HSV; 
     Mat leftgreen; 
     Mat leftred; 

     //Left Cropping 
     Mat leftimg = image(Rect(0, 0, 640, 720));  

     //Left Red Detection 
     cvtColor(leftimg,HSV,CV_BGR2HSV); 
     inRange(HSV,Scalar(0,0,150),Scalar(0,0,255), leftgreen); 
     //imshow("HSVLeftRed", leftgreen); 
     //print pixel type  

     //Left Green Detection 
     cvtColor(leftimg,HSV,CV_BGR2HSV); 
     inRange(HSV,Scalar(still need to find proper min values),Scalar(still need to find proper max values), leftgreen); 
     //imshow("HSVLeftGreen", leftgreen); 
     //compare pixel types 
    } 
    return 0; 
} 

Заранее благодарен!

ответ

0

Чтобы подсчитать ненулевые пиксели, OpenCV имеет эту функцию cv::countNonZero. Требуется ввести изображение, число ненулевых пикселей которого мы хотим вычислить и выводить, - это число ненулевых пикселей (int). Here - это документация.

В вашем случае, поскольку все пиксели являются либо черными, либо белыми, все ненулевые пиксели будут иметь белые пиксели.

Это, как использовать его,

int cal = countNonZero(image); 

Изменение image, в соответствии с вашим кодом.

+0

Большое вам спасибо – B3TA