打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
OpenCV读图函数imread的书写姿势



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

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

如图:



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




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

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




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

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

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



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

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

  1. #include<opencv2\opencv.hpp>  
  2.   
  3. using namespace cv;  
  4.   
  5. int main(int argc,char* argv[])  
  6. {  
  7.     Mat img;  
  8.   
  9.     //-- 1 --双右斜线法  
  10.     //string imgpath = "C:\\Users\\bingbuyu\\Pictures\\photo\\miao1.jpg";  
  11.     //-- 2 --双左斜线法  
  12.     //string imgpath = "C://Users//bingbuyu//Pictures//photo//miao1.jpg";  
  13.     //-- 3 --单左斜线法  
  14.     //string imgpath = "C:/Users/bingbuyu/Pictures/photo/miao1.jpg";  
  15.     //-- 4 --以上三种混合法  
  16.     //string imgpath = "C:/Users//bingbuyu\\Pictures//photo//miao1.jpg";  
  17.     //-- 5 --相对路径法  
  18.     //string imgpath = "miao.jpg";  
  19.     //-- 6 --命令行参数法  
  20.     string imgpath = argv[1];  
  21.   
  22.     img = imread(imgpath, 1);  
  23.     imshow("img", img);  
  24.   
  25.     waitKey(0);  
  26.     return 0;  
  27. }  

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






本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
OpenCV读取图片路径的几种写法
OpenCV Demo
Python-OpenCV 10. 图像边缘算法
史上最全的OpenCV入门教程!这篇够你学习半个月了!万字长文入门
OpenCV Python教程(1、图像的载入、显示和保存)
使用openCV与C++求图片特征值及特征向量并进行图片处理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服