我正在嘗試使用OpenCV 2.4.3(VS 2010)在用戶接受的輸入(通常是中心)上顯示圓圈。在輸出圖像上(使用'namedWindow'顯示),當一個圓點標記點時,圓圈似乎會逐列移位。不知道我應該如何糾正這一點。在OpenCV中顯示錯誤座標的用戶輸入
代碼:
struct OPTIONS{
OPTIONS(): X(-1), Y(-1), drawing_dot(false){}
int X;
int Y;
bool drawing_dot;
};
OPTIONS options;
void my_mouse_callback(int event, int x, int y, int flags, void* param){
IplImage* image = (IplImage*) param;
switch(event){
case CV_EVENT_LBUTTONDOWN:
options.X = x;
options.Y = y;
options.drawing_dot = true;
break;
default:
break;
}
}
int main(void){
IplImage* image = cvLoadImage("Images/TestRealData/img1.bmp");
Mat frame = imread("Images/TestRealData/img1.bmp");
namedWindow("Test", CV_WINDOW_KEEPRATIO);
cvSetMouseCallback("Test", my_mouse_callback, (void*) image);
while(cvWaitKey(15) != 27){
if(options.drawing_dot){
circle(frame, Point(options.X,options.Y), 3, CV_RGB(0,0,255), 2);
options.drawing_dot = false;
}
imshow("Test", frame);
waitKey(10);
}
cvReleaseImage(&image);
return 0;
}
感謝您花時間瀏覽代碼。是的,'options.Y/2'確實是一個錯誤,但我忘了在這裏更新更改。現在已經這樣做了。另外,我發現我錯了 - 我沒有提到'namedWindow'的任何標誌。改變這個伎倆。再次感謝! – Pranjal