2013-12-08 5 views
0

HSV 이미지를 반복하려고하지만 충돌이 계속됩니다. 당신이 종료 조건에 i 대신 j과 비교 내부 루프에서 오타가 있기 때문에hsv 이미지를 반복해서 반복합니다.

Mat a=imread("play.jpg"); 
    Mat hsvimage, hsvimage2,cont; 
    cvtColor(a, hsvimage, CV_BGR2HSV); 
    imshow("image",a); 
    inRange(hsvimage, Scalar(20, 100, 100), Scalar(170, 255, 255),hsvimage2); 
    imshow("Thresholded image",hsvimage2); 

     for(int i=0; i<hsvimage2.rows; i++) 
     for(int j=0; i<hsvimage2.cols; j++) 
    //the line belows keeps failing 
std::cout <<hsvimage2.at<uchar>(i,j) << " " << hsvimage2.at<uchar>(i,j) << " " << hsvimage2.at<uchar>(i,j) << std::endl; 

답변

1

그것은 아마도 충돌입니다.

for(int j=0; i<hsvimage2.cols; j++) 

또한, 당신은 BGR 이미지가는 (3 개 채널)이있는 경우, 당신은 (3 개 채널)을 HSV 이미지를 얻을 것이다, 그러나 그들은 단일 채널 인 것처럼 당신은 픽셀에 접근하고 있습니다. 루프에서 H, S 및 V 값을 덤프하려면 다음과 같이 시도하십시오.

for(int i=0; i<hsvimage2.rows; i++) 
{ 
    for(int j=0; j<hsvimage2.cols; j++) // original error was on this line 
    { 
     Vec3b pHSV = hsvimage2.at<Vec3b>(i, j); 
     std::cout << pHSV.val[0] << " " 
        << pHSV.val[1] << " " 
        << pHSV.val[2] << std::endl; 
    } 
} 
관련 문제