debug下waitkey(0)失效问题和imshow、namedWindow同名却形成双窗口问题

    通常在用opencv对图片进行显示时我都直接用

imshow("windowname",imgname.jpg);

waitkey(0);

来显示图像,但是重新配置新版opencv3.3后我再用上述代码显示图像时却出现窗口一闪而过的现象,于是我切换到release下,release下能够正常运行,但在debug模式下就是不行,于是我搜索opencv官方文档发现waitkey()函数的实用说明,显示waitkey()的实用必须在highguiGUI界面之后,其实imshow()函数已经可以产生一个highguiGUI界面了,但为什么不能引发waitkey()函数的作用,于是我想opencv新版本是不是必须要有namedwindow()产生窗体才可以,于是我在前面加上了namedwindow(“windowname”);在debug下运行,发现waitkey()函数起作用了,但是紧接而来的问题是产生了两个同名的窗口叠加在一起,一个是有图像的窗体,应该是imshow函数产生的,另外一个是没有图像的窗口应该是namedwindow函数产生的,而且鼠标焦点放在没有图像的窗体上时按键才能触发waitkey()函数的作用,这样很别扭,强迫症患者表示这样用着很难受,于是继续查原因。

debug下waitkey(0)失效问题和imshow、namedWindow同名却形成双窗口问题_第1张图片

    后来在点击打开链接发现了解决方案,原来我在配置opencv时在dubug下的“属性-》连接-》输入-》附加依赖项”中把opencv_world330.lib,opencv_world330d.lib两个都加了,其实只需要加对应的一个就可以了,估计在debug下这两个会有兼容性问题(在release下两个也都加了但没有出现问题),我去掉了opencv_world330.lib后就好了,不会出现两个窗口,而且不用加namedwindow()函数也可以正常运行。到头来发现是自己配置opencv时图省事两个lib文件不加区分的添加进去造成的问题。看来把事情做好需要从细节抓起啊!

你可能感兴趣的:(opencv,opencv,waitkey,namedwindow,vs,debuge)