我在屏幕上显示一个 Mat 矩阵作为图像。我想单击此图像上的某个位置,并希望在屏幕上获取该像素值。
如何使用 OpenCV、C++ 完成?
我在下面使用此代码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;
}
希望这可以帮助。
对于 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
}