当前位置: 首页 > 编程笔记 >

OpenCV 使用imread()函数读取图片的六种正确姿势

钮承恩
2023-03-14
本文向大家介绍OpenCV 使用imread()函数读取图片的六种正确姿势,包括了OpenCV 使用imread()函数读取图片的六种正确姿势的使用技巧和注意事项,需要的朋友参考一下

经常看到有人在网上询问关于imread()函数读取图片失败的问题。今天心血来潮,经过实验,总结出imread()调用的四种正确姿势。

通常我要获取一张图片的绝对路径是这样做的:在图片上右键——属性——安全——对象名称。然后复制对象名称就得到了图片的绝对路径。

如图:


然而这样得到的路径直接复制粘贴到vs里面会直接报错,如下:


可以看出我们获取的绝对路径的表示方法是单右斜线形式的。显然opencv的imread()不支持这种方式。但是!!!经过实验发现imread()除了不支持单右斜线形式,其他斜线形式都支持!!!比如双右斜线形式、双左斜线形式、单左斜线形式、前述三种斜线混合型式都是支持的!!我想知道为什么??

看图,下面的六种方式任何一种都是支持的,都可以成功读取并显示图片。


我个人经常用的方法是第5种,相对路径法。只需要把图像文件放在工程文件夹下和.cpp文件放在一起就行了,读取的时候就可以直接用名字读取,如imread("miao.jpg");

最后一种命令行参数法是源码中比较常见的。设置方法是:

工程——属性——配置属性——调试——命令行参数,然后设置就行了。如图:


设置之后miao.jpg就是argv[1],2.jpg就是argv[2]。

这次的完整代码如下(路径因人而异的):

#include<opencv2\opencv.hpp>
 
using namespace cv;
 
int main(int argc,char* argv[])
{
	Mat img;
 
	//-- 1 --双右斜线法
	//string imgpath = "C:\\Users\\bingbuyu\\Pictures\\photo\\miao1.jpg";
	//-- 2 --双左斜线法
	//string imgpath = "C://Users//bingbuyu//Pictures//photo//miao1.jpg";
	//-- 3 --单左斜线法
	//string imgpath = "C:/Users/bingbuyu/Pictures/photo/miao1.jpg";
	//-- 4 --以上三种混合法
	//string imgpath = "C:/Users//bingbuyu\\Pictures//photo//miao1.jpg";
	//-- 5 --相对路径法
	//string imgpath = "miao.jpg";
	//-- 6 --命令行参数法
	string imgpath = argv[1];
 
	img = imread(imgpath, 1);
	imshow("img", img);
 
	waitKey(0);
	return 0;
}

以上六种的运行结果,还是这只喵:

 

到此这篇关于OpenCV 使用imread()函数读取图片的六种正确姿势的文章就介绍到这了,更多相关OpenCV imread()读取图片内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 问题内容: 我正在用python编写OpenCV程序,在某些时候我有类似的东西 问题是我必须在继续之前检测是否正确读取了图像文件。如果无法打开图像,则返回,所以我想做些类似的事情: 如果未打开图像(例如,文件不存在),则等于(预期)。但是,当工作时,条件将中断: 即,返回的值不能用作布尔值。问题似乎是如果成功则返回numpy.ndarray,否则返回(布尔值)。 到目前为止,我的解决方案涉及使用返

  • 包的类提供读取和写入图像的方法。使用OpenCV,可以读取图像并将其存储在矩阵中(如果需要,可在矩阵上执行转换)。之后可以将处理后的矩阵写入文件。 类的方法用于使用OpenCV读取图像。 以下是此方法的语法。 它接受一个参数(文件名),一个字符串类型的变量,表示要读取的文件的路径。 下面给出了使用OpenCV库读取Java图像的步骤。 第1步:加载OpenCV本机库 使用方法加载OpenCV本机库

  • 本文向大家介绍详解webpack提取第三方库的正确姿势,包括了详解webpack提取第三方库的正确姿势的使用技巧和注意事项,需要的朋友参考一下 我们在用webpack打包是时候,常常想单独提取第三方库,把它作为稳定版本的文件,利用浏览缓存减少请求次数。常用的提取第三方库的方法有两种 CommonsChunkPlugin DLLPlugin 区别:第一种每次打包,都要把第三方库也运行打包一次,第二种

  • 要成为一个优秀的前端工程师,需要什么技能和学习?答案:练习 在逛知乎、SegmentFault 又或者是相似的技术社区,我们总会看到类似的问题。新手总会关注于,需要怎样的技能,怎么才能入门?有一点经验的程序员则是,需要练习什么?如若一个程序 员已经懂得问题的关键是,编程需要大量的练习。那么,我想这个程序员已经入了这个行道了。 在我成为所谓的『前端工程师』之前,我没有想到会变成这样的结果。 前端项目

  • 所有让你直接看最新源码的文章都是在扯淡,你应该从“某个版本”开始阅读代码。 我们并不建议所有的读者都直接看最新的代码,正确的姿势应该是: clone 某个项目的代码到本地 查看这个项目的 release 列表 找到一个看得懂的 release 版本,如 1.0 或者更早的版本 读懂上一个版本的代码 向后阅读大版本的源码 读最新的源码 最好的在这个过程中,可以自己造轮子来实现一遍。 阅读过程 在我阅

  • 以下程序演示了如何将彩色图像作为BGR类型图像读取并使用JavaFX窗口显示。 在这里通过将标志传递给方法以及保存彩色图像路径的String来读取图像。 假定以下是上述程序中指定的输入图像。 读取图片转为BGR如下所示 -