[转载]OpenCV解决绝对路径导入错误的方法及亲测可行的几种路径方法!

本文详细解析了使用OpenCV的imread函数时遇到的路径导入问题,包括双右斜线、双左斜线、单左斜线等六种路径表示方法的实践测试,并深入探讨了路径错误的原因及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个困扰了好几天的问题,突然就看到了这篇博客,学到的不仅是问题的解决,而是解决问题的方法!所以转载分享给大家。

原文

在这里给大家说一下OpenCV解决绝对路径导入图片的问题imread();
在这里插入图片描述
在这里插入图片描述
以上是我在用imread的时候读入图片的代码,总是报错解决不了,然后看了一下路径感觉也对。但是就是查不出什么错误。然后我就写了一个string类型的path来保存我的地址,然后在imread里面直接用path。通过打断点我发现了代码错误的问题。
在这里插入图片描述
在这里可以看到我的path里面的路径D:\test\timg.jpg前面有两个问号。这就导致了路径的错误。因为我是直接粘贴的地址所以导致路径错 误,所以我自己用手打了一遍路径,结果正确的显示。
imread()读入图片的时候,路径要用“\”斜杠,或者是“/”斜杠
在这里插入图片描述
在这里插入图片描述
原因如下:
在C里面,输出字符串时,如果想输出一个换行,那就要加上’\n’这个标志,类似的,输出一个TAB,就加上’\t’,也就是说,反斜杠("")这个符号会把跟在它后面的字符结合起来转义成其它字符。根据这个原理,如果想输出双引号(’"’),就需要输入’"’,这样才会将包含了双引号的字符串正确的写入内存中。那么如果想输入一个反斜杠呢?很简单,只要敲’'就可以了。如果"C:\Windows\System"这个路径字符串交给C编译器编译,实际写入内存的字符串并没有包含反斜杠"",甚至紧跟在反斜杠后面的字母也一起被转义成了其它的字符,再次调用的话势必会出问题。
然后就是要注意粘贴的时候要注意路径是否正确。因为复制粘贴地址的时候会有些隐藏的字符在里面,导致路径错误,所以有时候不要为了省时间导致这些小错误的出现。
敲代码的时候也要有时候一个小小的细节就会导致整个代码的错误。所以细节决定成败!敲代码一定要认真!
————————————————
版权声明:本文为优快云博主「Ating~」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_42781040/article/details/97793368


分界线

解决了上面的问题后,自己尝试了六种 imread 读取图片路径的表示方法,亲测以下全部可以:

1.双右斜线法
2.双左斜线法
3.单左斜线法
4.以上三种混合法
5.相对路径法
6.命令行参数法

#include<opencv2\opencv.hpp>  

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{
	Mat Img;

	//双右斜线法  
    string imgpath = "E:\\program\\2.jpg";
	//双左斜线法  
	//string imgpath = "E://program//2.jpg";  
	//单左斜线法  
	//string imgpath = "E:/program/2.jpg";  
	//以上三种混合法  
	//string imgpath = "E://program/2.jpg";  
	//相对路径法  
	//string imgpath = "2.jpg";  
	//命令行参数法  
	//string imgpath = argv[1];

	Img = imread(imgpath,1);
	imshow("img", Img);

	waitKey(0);
	return 0;
}

最后一种 命令行参数法 需要在 “项目属性——调试——命令参数” 添加命令。
图片放在cpp文件同一目录下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值