OpenCVimread读取图片失败的问题及解决
| 分类: 机器视觉 |
OpenCV imread读取图片失败问题
使用一下代码读取一张图片失败(不管是绝对路径还是相对路径,都失败),工程运行都没问题,就是图片读取失败。
|
1
2
3
4
5
6
7
8
9
10
|
// 读入一张图片(游戏原画) Mat
img=imread("hehe.jpg"); if(!img.data)
//判断图片调入是否成功 return
-1; //调入图片失败则退出// 创建一个名为 "游戏原画"窗口 cvNamedWindow("enen"); // 在窗口中显示游戏原画 imshow("enen",img); // 等待6000 ms后窗口自动关闭 waitKey(6000); |
以上的问题是因为工程的配置为Debug模式
https://file.zhano.cn/article/2022111011005517.png
但在配置“链接器->附加依赖项”时,把*.lib库一起加入其中,并且将*.lib库加在了*d.lib库之前,这样就导致了优先使用*.lib。解决办法是把附加依赖项中open的*.lib全删了。
注意:
一般在配置工程时,Debug工程的“链接器->附加依赖项”一般只加*d.lib库;而Release工程的“链接器->附加依赖项”一般只加*.lib库,这样就可以避免以上问题。
OpenCV读图失败的三种情况,其中一种情况罕见
初学OpenCV,对于读图片失败一共碰到过三种情况,第一种情况似乎没什么人遇到过,但我遇到了这个坑,写在最前面希望给后续的朋友一定帮助。
一、Windows粘贴可能存在非法字符
本人在使用imread函数进行读图片时,由于偷懒,直接把图片属性页(图1)里的红色方框路径复制到程序中,加上反斜杠后跑程序会崩溃。此时是因为这样复制的路径可能存在非法字符,但是在IDE中又不显示,导致路径看起来是正确的,但实际上是错误的。可以尝试手动输入地址,也许问题就能解决。
https://file.zhano.cn/article/2022111011025918.jpg
图一
二、路径斜杠的问题
由于“\”在编程语言中是充当转义符号存在的,故图片路径中的“\”会被认为是转义符而并不是我们想象中的路径分割符,此时需要用“\\”来实现,第一个“\”代表转义,这样第二个“\”就会被识别为分隔符。如果不愿使用反斜杠,可以将反斜杠全部换为斜杠“/”输入。例如:
|
1
2
3
4
5
|
//使用反斜杠imread("C:\\Users\\1.jpg")imread("C:\Users\1.jpg") //错误的方式//使用斜杠imread("C:/Users/1.jpg") |
三、附加依赖项的原因
在配置OPENCV环境的时候,如果将附加依赖项中的文件全部添加进去可能会存在一些错误,读图失败就是其中之一。
https://file.zhano.cn/article/2022111011025919.png
https://file.zhano.cn/article/2022111011025920.png
我的配置文件打开附件依赖项可以看到添加的是opencv_world430.lib,数字代表的是版本号,和我的不一样没有任何影响,
以上为个人经验,希望能给大家一个参考,也希望大家多多支持站圈网。
转:https://www.zhano.cn/python/67836.html

加载中…