您的位置:首页 > 编程语言 > C语言/C++

C++版openCV waitKey(0)失效的解决办法

2017-11-28 19:30 1721 查看

问题描述

今天遇到了一个问题,使用opencv读取一张图像并显示,Build然后F5。不知未何,图像窗口一闪而过。明明加上了waitKey(0)呀,至少应该等我按键才会结束的嘛,Ctrl + F5依然不行。为何会这样?

#include<opencv2\opencv.hpp>
using namespace cv;
int main() {
Mat image = imread("c:\\users\\like\\pictures\\图片2.tif");
imshow("original", image);
waitKey(0);
return 0;
}


更新解决办法

今天同样的问题再次出现了,并且比上次来的更加凶猛,原来是根本问题没有解决!

StackOverflow上提问, 得到大神指点。发现是我的环境配置有问题。

虽然更新之前说的文件编码是错误的,导致文件找不到的问题。但现在看来,这不是主要问题,主要问题是配置问题。



This problem is due to wrong linking settings:

In Debug, you need to link only to the debug library opencv_world331d.lib

In Release, you need to link only to the release library opencv_world331.lib

现在去更新之前写的opencv配置的博客:openCV3.X+VS2015+Windows10环境配置详解

解决办法

按照autocyz的文章:opencv中waitkey(0)不起作用,加上system(“pause”)也没有解决问题。窗口没有消失,也没有显示图像内容。但是图像弹窗的标题是乱码的,命令行提示size<0,推测可能是代码文件的编码方式有问题导致没有找到图像,不是utf-8,不属于编译器默认的文件编码格式。

使用notepad++打开test.cpp,点击菜单中【编码】,发现该文件的编码方式是【UTF-8无BOM格式编码】,点击下面的【UTF-8格式编码】,即刻修改为正常的utf-8的格式。可能代码中的中文需要重新输入才能解决问题。

python中可能出现的问题

抛开代码格式问题不谈,opencv显示图像的窗口可能卡死,这是因为没有加上waitKey()导致的。

StackOverflow上也有人发布了waitKey不起作用的问题:Opencv python. WaitKey don’t respond?

import cv2

img = cv2.imread('347620923614738322_233985812.jpg')
cv2.namedWindow("window")
cv2.imshow("window", img)
cv2.waitKey(0)


给出的解决方案是加上destoryAllWindows()

# -*- coding: utf-8 -*-

# Objectif : découvrir le fonctionnement d'opencv-python
# http://opencv-python-tutroals.readthedocs.org/en/latest/index.html 
import numpy as np
import cv2

# Load an color image in grayscale
img = cv2.imread('Lena.tiff',0)
WINDOW_NAME = 'Image de Lena'
cv2.namedWindow(WINDOW_NAME, cv2.CV_WINDOW_AUTOSIZE)
cv2.startWindowThread()

# Display an image
cv2.imshow(WINDOW_NAME,img)
cv2.waitKey(0)

cv2.destroyAllWindows()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv C++ waitKey