配置OPENCV中出现的指针越位问题

本文介绍了一个常见的OpenCV图片读取错误,即图片路径问题导致的读取失败。通过修改路径设置,使用绝对路径并正确处理反斜杠,可以成功读取并显示图片。文章详细解释了路径字符串在C语言中的处理方式,以及如何避免由路径引起的错误。

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

原因:图片路径

//一段简单的OPENCV测试程序 
#include <iostream>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  

using namespace cv;
using namespace std;

int main() {
	// 读入一张图片(游戏原画)    
	Mat img = imread("1.jpg");
	// 创建一个名为 "游戏原画"窗口    
	namedWindow("游戏原画");
	// 在窗口中显示游戏原画    
	imshow("游戏原画", img);
	// 等待6000 ms后窗口自动关闭    
	waitKey(6000);
}

却出现以下的报错。
在这里插入图片描述

可能是imread(“pic.jpg”);的路径问题,把路径打全。而且注意左右斜杠,如果我们将imread(“C:\Users\Administrator\Desktop\图库\a.jpg”)改为imread(“C:\Users\Administrator\Desktop\图库\a.jpg”)或者imread(“C:/Users/Administrator/Desktop/图库/a.jpg”)问题就解决了。

最后查了一下资料是这样解释的:
在C里面,输出字符串时,如果想输出一个换行,那就要加上’\n’这个标志,类似的,输出一个TAB,就加上’\t’,也就是说,反斜杠("")这个符号会把跟在它后面的字符结合起来转义成其它字符。根据这个原理,如果想输出双引号(’"’),就需要输入’"’,这样才会将包含了双引号的字符串正确的写入内存中。那么如果想输入一个反斜杠呢?很简单,只要敲’\'就可以了。
如果"C:\Windows\System"这个路径字符串交给C编译器编译,实际写入内存的字符串并没有包含反斜杠"",甚至紧跟在反斜杠后面的字母也一起被转义成了其它的字符,再次调用的话势必会出问题。

//修改代码如下
int main() {
	// 读入一张图片(游戏原画),路径设置为绝对路径  
	Mat img = imread("G:/Workspace/VisualStudioWorkspace/TestOpencv/testopencv/1.jpg");
	//绝对路径也可以如下设置
	//Mat img = imread("G:\\Workspace\\VisualStudioWorkspace\\TestOpencv\\testopencv\\1.jpg");
	// 创建一个名为 "游戏原画"窗口    
	namedWindow("游戏原画");
	// 在窗口中显示游戏原画    
	imshow("游戏原画", img);
	// 等待6000 ms后窗口自动关闭    
	waitKey(6000);
	//cout << "heloo" << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值