Visual studio 2010 鼠标操作:打印像素位置
我一直在尝试在VS2010中使用OpenCV做一些工作,特别是在鼠标处理方面。到目前为止,我有:Visual studio 2010 鼠标操作:打印像素位置,visual-studio-2010,opencv,callback,mouseevent,Visual Studio 2010,Opencv,Callback,Mouseevent,我一直在尝试在VS2010中使用OpenCV做一些工作,特别是在鼠标处理方面。到目前为止,我有: CV_EVENT_LBUTTONDOWN :drawing_line = true; cvLine( frame, cvPoint(x,y),cvPoint(350,500), CV_RGB(255,0,0), CV_AA, 15,0 ); fprintf( stdout, "Point found. %i, %i \n", object_x0, ob
CV_EVENT_LBUTTONDOWN
:drawing_line = true;
cvLine( frame, cvPoint(x,y),cvPoint(350,500), CV_RGB(255,0,0), CV_AA, 15,0 );
fprintf( stdout, "Point found. %i, %i \n", object_x0, object_y0 );
break;
我希望它返回我单击的像素的位置,但它返回的是“Point found.0,0”,而不是实际位置。最后,我想用cvLine的点来画一条线,但现在我只想得到一些返回给我的值。如有任何建议,将不胜感激。谢谢 点作为参数传递给鼠标回调函数
void onMouse(int event, int x, int y, int flags, void* param)
当您单击“向下”时,您希望将这些x、y保存到一个全局中,然后单击“向上”时保存到另一个全局中,然后在两者之间画一条线。您可以通过将鼠标单击的位置作为参数传递给鼠标回调函数来获得该位置,如下所示:
void onMouse(int evt, int x, int y, int flags, void* param) {
if(evt == CV_EVENT_LBUTTONDOWN) {
cv::Point* ptPtr = (cv::Point*)param;
ptPtr->x = x;
ptPtr->y = y;
}
}
int main() {
cv::Point2i pt(-1,-1);
cv::namedWindow("Output Window");
frame = cv::imread("image.jpg");
cv::imshow(winName, frame);
cv::setMouseCallback(winName, onMouse, (void*)&pt);
// Note that we passed '&pt' (a pointer
// to `pt`) to the mouse callback function.
// Therefore `pt` will update its [x,y] coordinates
// whenever user left-clicks on the image in "Output Window".
}
什么是
object\u x0
和object\u y0
?请参阅OpenCV2.2\samples\cpp\camshiftdemo.cpp
谢谢您提供的代码示例,但是我们如何才能看到鼠标单击的位置?