我在屏幕上显示Mat矩阵作为图像。 我想点击此图片上的某个位置,我想在屏幕上获取该像素值。
如何使用OpenCV,C ++完成?
答案 0 :(得分:2)
我将以下代码用于IplImage
,但使用Mat
时结果应该相同。
void my_mouse_callback(int event, int x, int y, int flags, void* param){
IplImage* image = (IplImage*) param;
switch(event) {
case CV_EVENT_LBUTTONDOWN:
std::cout << "x: " << x << std::endl;
std::cout << "y: " << y << std::endl;
break;
default:
break;
}
}
int main() {
IplImage* image = cvLoadImage("picture_file_name_here");
cvNamedWindow("Test");
cvSetMouseCallback("Test", my_mouse_callback, (void*) image);
cvShowImage("Test", image);
cvWaitKey(0);
cvReleaseImage(&image);
return 0;
}
希望这有帮助。
答案 1 :(得分:0)
对于cv :: Mat,它看起来像:
cv::Mat mat; // load img, etc
cv::setMouseCallback("Test", my_mouse_callback, (void*) &mat);
// ...
void my_mouse_callback(int event, int x, int y, int flags, void* param){
cv::Mat mat = *((cv::Mat*)param); // so, 1st cast, then deref
}