我想在 OpenCV 中实现鼠标回调并将强度值打印到控制台。我尝试了以下方法:
void mouseHandler( int event, int x, int y, int flags, void* param ) {
if( event != CV_EVENT_LBUTTONDOWN )
return;
cv::Point point = cv::Point( x, y );
cv::Mat *img = (cv::Mat*) param;
uchar val = img->at< uchar >( point );
std::printf( "x: %i y:%i val: %u\n", x, y, val );
}
对此的呼吁是:
cv::setMouseCallback( "imageName", mouseHandler, &img);
当我单击图像时,我的程序崩溃了。我试图只打印坐标,这很好用。显然,当我尝试访问图像值时程序崩溃了......
我有一个单通道 CV_8U 图像:
img.convertTo( nImg, CV_32FC3 );
cv::cvtColor( nImg, hsvImg, CV_RGB2HSV_FULL );
cv::split( hsvImg, channels );
channels[2].convertTo( chan, CV_8U );
cv::setMouseCallback( "chan", mouseHandler, &chan );
有任何想法吗?