我是openCV的新手,最近获得了openCV 2.4.7的预编译版本,并成功地将其与visual studio 2010集成。
显然库似乎工作正常,但是当我尝试使用imshow显示图像时,它会显示窗口但不显示图像。
{
cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED);
if(image.empty())
{
cout<<"image not loaded";
}
else
{
cv::namedWindow( "test", CV_WINDOW_AUTOSIZE );
cv::imshow("test",image);
}
}
任何帮助都将受到高度赞赏。
答案 0 :(得分:25)
你必须:
cv::waitKey(0);
而不是:
system("pause");
后者不起作用。 OpenCV需要抽取消息来显示和更新窗口,并且waitKey
函数内部的所有机制都是这样做的。
正如文档所说,waitKey
仅在打开HighGUI窗口时才有效,因此在您的代码中,您可能需要这样做:
cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED);
if(image.empty())
{
cout<<"image not loaded";
}
else
{
cv::namedWindow( "test", CV_WINDOW_AUTOSIZE );
cv::imshow("test",image);
cv::waitKey(0);
}
如果图像格式有问题,您可以尝试加载:
cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_COLOR);
答案 1 :(得分:1)
我建议删除cv::namedWindow
语句,然后添加
cv::waitKey();
在cv:imshow
语句之后。您还可以检查窗口的尺寸是否正确。
答案 2 :(得分:0)
对于Python用户,使用cv2.wait(0)
是解决方案。因此,整体格式如下:
cv2.imwrite("DetectionResults.jpg", frame)
cv2.imshow("DetectionResults", frame)
cv2.waitKey(0)