0

以下のコードの何が問題なのか、誰でもわかりますか。画像の最後の部分をマウスで移動すると、セグメンテーション エラーが発生します。マウスの位置に応じてR、G、B値を出力しています。

#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;
}

前もって感謝します......

4

1 に答える 1

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

する必要があります:

Vec3b pix=image.at<Vec3b>(y,x);  // row,col !!
于 2013-05-18T11:52:53.203 に答える