opencv c++中的鼠标事件
mouse event in opencv c++
我想写一个具有以下功能的程序:
当用户在窗口上单击鼠标左键时,会出现一个圆圈采用15半径构建
一开始我做了一个黑色的图像500*500
然后我用setMouseCallback
代替my_mouse_callback
,在函数my_mouse_callback
中我写了我的圆圈代码,当运行程序时没有任何错误,但只有一个黑色图像500*500,当我点击鼠标左键时什么都没有发生,我知道我的程序有问题,但在哪里?请帮我,我的程序是这样的:
void my_mouse_callback(int event, int x, int y, int flags, void* param);
int main() {
int i,j,k;
Mat image;
image.create(500,500,CV_8UC3);
namedWindow("amin");
for(i=0;i<500;i++){
for(j=0;j<500;j++){
for(k=0;k<3;k++){
Vec3b &intensity = image.at<vec3b>(j, i);
intensity.val[k]=0;
}
}
}
setMouseCallback( "amin", my_mouse_callback, &image );
imshow("amin",image);
waitKey(0);
return(0);
}
void my_mouse_callback( int event, int x, int y, int flags, void* param ) {
if(event==CV_EVENT_LBUTTONDOWN){
circle( image, Point(x,y), 20, Scalar(0xff,0xff,0xff) );
}
}
这似乎是我没有使用过的OpenCV,但:
image变量肯定不能从my_mouse_callback函数访问——它是main()的本地变量吗?你的意思是:
void my_mouse_callback( int event, int x, int y, int flags, void* param ) {
if(event==CV_EVENT_LBUTTONDOWN){
Mat* pImage = (Mat*)param;
Mat image = *pImage;
circle( image, Point(x,y), 20, Scalar(0xff,0xff,0xff) );
}
}
如果这个答案很愚蠢,我会说,但我没有使用简历,这是30秒阅读文档的结果。
当我在2.4.9版本中使用opencv时,我在模块/higigui/include/opencv2/highgui.hp
enum
{
EVENT_MOUSEMOVE =0,
EVENT_LBUTTONDOWN =1,
EVENT_RBUTTONDOWN =2,
EVENT_MBUTTONDOWN =3,
EVENT_LBUTTONUP =4,
EVENT_RBUTTONUP =5,
EVENT_MBUTTONUP =6,
EVENT_LBUTTONDBLCLK =7,
EVENT_RBUTTONDBLCLK =8,
EVENT_MBUTTONDBLCLK =9
};
因此,请检查源文件中的事件名称是否正确。
替换此:
imshow("amin",image);
waitKey(0);
带有:
while(true){
imshow("amin",image);
waitKey(1);} // 1ms
相关文章:
- 跟踪滚动条上的鼠标事件
- Qt-如何在Qt3DWindow上获取鼠标事件
- Qt:如何防止为平板电脑事件生成鼠标事件
- 如何使用 c++ mfc 在屏幕上获取鼠标事件
- WM_PAINT和鼠标事件.MFC/WIN32 API.
- 通过鼠标事件传递数据
- 鼠标区域窃取QQuickItem的鼠标事件
- Windows Console API鼠标事件只是进入选择模式
- 无法跟踪鼠标事件 OpenCV
- Qt. 忽略小部件中的任何鼠标事件,而不是另一个小部件
- WXWIDGETS将鼠标事件连接到WXPAINTDC上的形状对象以删除
- Qt/Qml - 触发 QApplication/QQmlApplicationEngine 事件(键和鼠标事件)
- Juce 鼠标事件不起作用
- 是否可以捕获全局鼠标事件
- 单击QCHART图的轴时捕获鼠标事件
- OpenCV 鼠标事件始终在鼠标滚动时接收事件 10 和 *flag* 0
- 鼠标事件选取器打开场景图
- 将鼠标事件发送到虚拟现实OpenGL场景中的QtQuick窗口
- 处理鼠标事件SFML
- 是否可以在 wxFrame 中捕获鼠标事件