2013-05-18 85 views
0

任何人都可以告訴下面的代碼有什麼問題。鼠標移動圖像的最後部分時,出現分段錯誤。我只是根據鼠標位置打印R,G,B值。OpenCV使用鼠標訪問像素值

#include <iostream> 
#include <stdio.h> 
#include <opencv2/opencv.hpp> 

using namespace cv; 
using namespace std; 
Mat image; 
char window_name[20]="Pixel Value Demo"; 

static void onMouse(int event, int x, int y, int f, void*){ 

Vec3b pix=image.at<Vec3b>(x,y); 
int B=pix.val[0]; 
int G=pix.val[1]; 
int R=pix.val[2]; 
cout<<R<<endl<<G<<endl<<B<<endl; 

} 



int main(int argc, char** argv) 
{ 
    namedWindow(window_name, CV_WINDOW_AUTOSIZE); 
    image = imread("src.jpg"); 
    imshow(window_name, image);  
    setMouseCallback(window_name, onMouse, 0); 
    waitKey(0); 
    return 0; 
} 

在此先感謝......

回答

2
Vec3b pix=image.at<Vec3b>(x,y); 

應該是:

Vec3b pix=image.at<Vec3b>(y,x); // row,col !! 
+0

謝謝你好........ – Haris