0

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 );

何か案は?

4

0 に答える 0