opencv里面imshow一张图片显示不出来

man在尔归 2017-04-27 12:02:06
环境:Opencv3.2,VS2015,电脑win10,64位。
配置好opencv之后,写了个很简单的程序,编译没有错误,提示了一些类似“已加载xx.dll,无法查找或打开 PDB 文件”这样子的提示。显示图片。
(1)显示一张.jpg图片,但是显示出来之后不能拖动图片,而且鼠标放在图片上就一直是转圈圈(鼠标加载圈圈截图的时候看不到,你们应该可以想象到),根本没办法操作,如图所示:

(2)当我显示一下张很小的图片是,窗口的宽度是我原图像的2倍左右,所以又1/2的部分的灰的,根本没有图像。如图所示:

(3)显示.png图像,显示不出来。标题也没有,如下图:

(4)程序如下:
[code=c#include<opencv2\opencv.hpp>
#include <highgui\highgui.hpp>
using namespace cv;

int main()
{
Mat srcImg = imread("1.jpg");
imshow("原图",srcImg);
waitKey(30);
Mat srcImg1 = imread("2.png");
imshow("png图片",srcImg);
system("pause");
return 0;
}][/code]
(5)选择几个“已加载xx.dll,无法查找或打开 PDB 文件”这样子的提示如下:提示的这些DLL在相应的位置都存在。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\OpenCL.DLL”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\DriverStore\FileRepository\igdlh64.inf_amd64_a88bf6b18b1da077\IntelOpenCL64.dll”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已加载“C:\Program Files (x86)\Common Files\Intel\OpenCL\bin\x64\intelocl64.dll”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已加载“C:\Program Files (x86)\Common Files\Intel\OpenCL\bin\x64\task_executor64.dll”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已加载“C:\Program Files (x86)\Common Files\Intel\OpenCL\bin\x64\cpu_device64.dll”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已卸载“C:\Windows\System32\ResourcePolicyClient.dll”
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\DriverStore\FileRepository\nvcv.inf_amd64_5c8444227c9d07aa\nvinitx.dll”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\DriverStore\FileRepository\igdlh64.inf_amd64_a88bf6b18b1da077\igc64.dll”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\nvopencl.dll”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\setupapi.dll”。已加载符号。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\nvfatbinaryLoader.dll”。无法查找或打开 PDB 文件。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\ws2_32.dll”。已加载符号。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\devobj.dll”。已加载符号。
“Testopencv.exe”(Win32): 已加载“C:\Windows\System32\nvapi64.dll”。无法查找或打开 PDB 文件。
图片不能正确显示和这些DLL有关系吗?到底是什么问题呢?谢谢大神能帮忙解决!
...全文
6719 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
惊鸿一博 2019-03-31
  • 打赏
  • 举报
回复
引用 6 楼 小立1991 的回复:
system("pause");改为waitkey(0)
这是线程阻塞造成的
《-----折腾一星期了 这句看似无关的代码,让图像无法显示!!!!!!!!!!!!!!
man在尔归 2017-05-10
  • 打赏
  • 举报
回复
引用 9 楼 qq_21400315 的回复:
waitkey(0)的原理是挂起当前线程,在创建的线程显示图片,所以点击gui才有反应。当时用system("pause")的时候,只是挂起当前线程,没法对gui进行操作,所以一直卡着。
谢谢您
Mr_Zhouzl 2017-05-08
  • 打赏
  • 举报
回复
waitkey(0)的原理是挂起当前线程,在创建的线程显示图片,所以点击gui才有反应。当时用system("pause")的时候,只是挂起当前线程,没法对gui进行操作,所以一直卡着。
man在尔归 2017-05-06
  • 打赏
  • 举报
回复
引用 6 楼 qq_21400315 的回复:
system("pause");改为waitkey(0) 这是线程阻塞造成的
谢谢大神解答,关于显示大小的问题和创建的窗口参数有关,解决了。你说的很有用,很感谢!!以前我用VS2010+opencv 2.4.9的时候都是使用system("pause"),一直都没有出现这个问题,您能解释一下为什么使用它就阻塞线程了呢?谢谢谢谢,对线程了解一点,不是太多。
man在尔归 2017-05-06
  • 打赏
  • 举报
回复
引用 6 楼 qq_21400315 的回复:
system("pause");改为waitkey(0) 这是线程阻塞造成的
按你说的我试了下,显示的图像不再有缓冲的圈圈了,而且可以移动了,但是图片显示出来只占窗口的1/2,剩下的一般是灰色窗口,您知道这是什么原因吗?谢谢啦。。
Mr_Zhouzl 2017-05-06
  • 打赏
  • 举报
回复
system("pause");改为waitkey(0) 这是线程阻塞造成的
赵4老师 2017-04-27
  • 打赏
  • 举报
回复
打开用CMake生成的对应你VS版本的opencv.sln文件,设置解决方案配置(Debug/Release)和解决方案平台(x64),在ALL_BUILD项目上点鼠标右键,选重新生成。
man在尔归 2017-04-27
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
我严重怀疑你根本没事先编译链接OpenCV 64位Debug版和64位Release版对应的一大堆dll
怎么叫事先编译?难道不是配置好之后,写个简单例程跑一下?您能说详细一点吗?我一般都是在网上找教程,按教程走的,不知道您说的事先编译对应的一大堆DLL具体怎么操作呢。谢谢了
赵4老师 2017-04-27
  • 打赏
  • 举报
回复
我严重怀疑你根本没事先编译链接OpenCV 64位Debug版和64位Release版对应的一大堆dll
man在尔归 2017-04-27
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
将所有opencv*.dll拷贝到你exe文件所在目录下。
我是按这个教程配置的:http://blog.csdn.net/lili2425960/article/details/54234299。您说的放到exe文件所在目录下,是说我的工程的exe么?我将opencv_world320d.dll,opencv_world320.dll,opencv_ffmpeg320_64.dll,opencv_ffmpeg320.dll拷贝过去了,没有解决。
赵4老师 2017-04-27
  • 打赏
  • 举报
回复
将所有opencv*.dll拷贝到你exe文件所在目录下。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧