我正在运行类似的代码;
Mat img1 = imread("C:\\input0.png");
namedWindow("original");
imshow("original", img1 );
int lowThreshold = 20;
int ratio = 2;
int kernel_size = 5;
Mat edge_map;
Mat gray_image;
cvtColor(img1, gray_image, CV_BGR2GRAY);
Canny(gray_image, edge_map, lowThreshold, lowThreshold*ratio, kernel_size);
namedWindow("Edge Image");
imshow("Edge Image", edge_map);
Mat result_image = produce_the_result_image(img1, edge_map);
namedWindow("Final Image");
imshow("Final Image", result_image );
int key = 1;
while (key != 'q') {
key = waitKey(5);
}
直到显示最后一个图像(最终图像窗口),其他窗口显示“无响应”,但在最后一个函数(produce_the_result_image)结束后(持续2-3分钟并显示所有图像窗口),错误将消失。这正常吗?
谢谢!
发布于 2016-08-11 18:53:47
OpenCV中的图像在调用waitKey();
之前不会显示或响应。因此,如果在调用imshow
的前两次调用waitKey(1);
之后,图像将显示(它将等待一毫秒的按键,然后就会变得没有响应)。如果您调用没有参数的waitKey();
,或者使用类似于代码末尾的while
循环,图像将显示和响应。一旦你按下一个键,图像就会再次失去响应。
所以是的,这是OpenCV的正常行为。请注意,它同时应用于所有窗口:如果当前正在调用waitKey
,则所有窗口都是响应的,或者它们都没有响应。
https://stackoverflow.com/questions/38903940
复制相似问题