vs2012-opencv 在vs下event出现问题

问题描述

opencv 在vs下event出现问题

我原来在linux下面配置的opencv环境,写了一些代码,后来需要移到windows下面,在vs2012里面构建起来,结果就出现了一些问题

代码如下
#include "stdfx.h"
#include "cv.h"
#include "highgui.h"
#include "cstdlib"

using namespace std;

const int windowsizex = 400;
const int windowsizey = 400;

const int stacksize = 1000;
CvPoint pointstack[stacksize];
int top = 0;

CvPoint begin;
CvPoint end;
int counter = 0;

void printline(IplImage* img)
{
cvLine(img , begin , end , cvScalar(255 , 255 , 255) , 1);
}
void my_mouse_callbacck(int event , int x , int y , int flags , void* param)
{
IplImage* image = (IplImage*) param;
if(flags == CV_EVENT_FLAG_CTRLKEY)
{
if(event == CV_EVENT_LBUTTONDOWN)
cout<<"yes"<<endl;
//scanlinefill(x , y , image);
}

else
{
    switch(event){
        case CV_EVENT_MOUSEMOVE : {
            if(counter != 0)
                end = cvPoint(x , y);
        }
        break;
        case CV_EVENT_LBUTTONDOWN : {
            if(counter > 0)
            {
                end = begin;
                begin = cvPoint(x , y);
                printline(image);               //print the important line inside the mouse event
            }
            else
            {
                begin = cvPoint(x , y);
                end = cvPoint(x , y);
            }
            counter++;
        }
        break;
        case CV_EVENT_LBUTTONDBLCLK : {
            counter = 0;
        }
    }
}

}

int main(int argc , char** argv)
{
IplImage* img = cvCreateImage(cvSize(windowsizex , windowsizey) ,IPL_DEPTH_8U , 3);
cvZero(img);

IplImage* temp = cvCloneImage(img);
cvNamedWindow("book3" , CV_WINDOW_AUTOSIZE);

cvSetMouseCallback("book3" , my_mouse_callbacck , (void*)img);

while(true)
{
    cvCopyImage(img , temp);
    if(counter > 0) printline(temp);
    cvShowImage("book3" , temp);
    if(cvWaitKey(15) == 27) break;
}

cvReleaseImage(&img);
cvReleaseImage(&temp);
cvDestroyWindow("book3");

return 0;

}

程序大概就是左键开始画线,每按一下都有一个拐点,双击的时候画线停止

问题如下:
就在mouse_callback这个函数里面,如果按下了alt键,然后再按左键,应该会调用一个函数,这里就用cout来验证了
if(flags == CV_EVENT_FLAG_CTRLKEY)
{
if(event == CV_EVENT_LBUTTONDOWN)
cout<<"yes"<<endl;
//scanlinefill(x , y , image);
}
本来在linux下面是能够正常执行的。
不过在windows的vs下面就不能够正常执行了,就是cout那一句一直没有执行出来。
不过如果在FLAG_CTRLKEY那个大括号里面添加上一句cout是能够执行的。
而且不按住alt的那些鼠标操作switch等等的,都能够正常操作。

不知道是什么原因?
求大神指点,先谢过。

时间: 2024-08-30 10:40:23

vs2012-opencv 在vs下event出现问题的相关文章

qt+vs2012+opencv-Qt5.2.1+vs2012+opencv静态编译出现问题

问题描述 Qt5.2.1+vs2012+opencv静态编译出现问题 我用Qt+vs2012编写了一个程序,想用静态编译的方法,但是会出现问题:opencv_core246.lib(opencv_core246.dll):-1: error: LNK1112: 模块计算机类型"X86"与目标计算机类型"x64"冲突

关于opencv的win32下控制台应用问题

问题描述 关于opencv的win32下控制台应用问题 "ConsoleApplication2.exe"(Win32): 已加载"D:vs_projectConsoleApplication2DebugConsoleApplication2.exe".已加载符号. "ConsoleApplication2.exe"(Win32): 已加载"C:WindowsSysWOW64 tdll.dll".无法查找或打开 PDB 文件.

OpenCV x64 vs2010 下打开摄像头录制视频写成avi(代码为转载)

首先参照下面这里进行opencv x64位机器下面的配置 http://wiki.opencv.org.cn/index.php/VC_2010%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.4.4   参考到环境变量处的配置之后,文章中所说的x64位机器环境的配置就不是很清晰了,我自己摸索了一些,其实vs2010本身就不是一个64位的编译器.       所以我认为,在64位的win7旗舰版系统中,这个编译器就是支持64位程序的编译运行.   但是vs2010中没有能够直

IE和Firefox下event事件杂谈_javascript技巧

因为javascript的事件模型有三种,它们分别是NN4.IE4+和W3C/Safari;这也造成了在不同的浏览器中处理event的差异,这里结合一些零碎的代码来说明如何做到event在IE4+和Firefox下的正常工作.首先看如下代码: 复制代码 代码如下: function doEventThing(eventTag){ var event = eventTag||window.event; var currentKey = event.charCode||event.keyCode;

关于火狐(firefox)及ie下event获取的两种方法_javascript技巧

经常有同事问我在火狐浏览器怎么获取event的方法,大多是想获取event.keyCode的功能两种方法 第一种方法: 复制代码 代码如下: function a(e){ e=e||window.event; alert(e.keyCode); } ie浏览器如下调用 复制代码 代码如下: <body onclick="a()"> firefox火狐浏览器如下调用 复制代码 代码如下: <body onclick="a(event)"> 这样

firefox下event.srcElemnet问题

在使用一个网页拾色器的时候,发现FF不支持event.srcElemnet方法,在网上查找了n多方法,都不可行.有的说FF支持even.target但是,我用这个属性的时候一直提示event未定义,很是郁闷,后来,经过多番查找,找到了兼容IE FF的方法.代码如下:     function myfunc(){ var evt=getEvent();          var element=evt.srcElement evt.target;          return element; 

jquery下event.which获取键盘、鼠标键值示例

jquery中使用event.which获取键盘.鼠标键值.event.which 将 event.keyCode 和 event.charCode 标准化了. 获取键盘输入值 <!DOCTYPE html> <html> <head> <meta charset="utf-8" />  <script type="text/javascript" src="http://lib.sinaapp.com

Linux下安装并使用Java开发opencv的配置

inux编译安装opencv 首先, linux下安装opencv其实不麻烦的, 参考文档即可完成: http://docs.opencv.org/trunk/doc/tutorials/introduction/linux_install/linux_install.html 大致有以下几个步骤: 1) 安装gcc以及cmake等等乱七八糟的软件(不过ubuntu下默认差不多都有了吧-) sudo apt-get install build-essential python-dev cmake

在MacOS和iOS系统中使用OpenCV

在MacOS和iOS系统中使用OpenCV OCT 27TH, 2012 前言 OpenCV 是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法. 最近试着在MacOS和iOS上使用OpenCV,发现网上关于在MacOS和iOS上搭建OpenCV的资料很少.好不容易搜到些资料,却发现由于OpenCV和XCode的版本更新,变得不再有用了.有些问题费了我很多时间,在此总结分享给大家,希望后来人少走些弯路. 可以预见到,随着XCode和OpenCV的版本更新,本文可能不再有