OpenCV 使用imread()函数读取图片的六种正确姿势
时间:2022-07-27
本文章向大家介绍OpenCV 使用imread()函数读取图片的六种正确姿势,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
经常看到有人在网上询问关于imread()函数读取图片失败的问题。今天心血来潮,经过实验,总结出imread()调用的四种正确姿势。
通常我要获取一张图片的绝对路径是这样做的:在图片上右键——属性——安全——对象名称。然后复制对象名称就得到了图片的绝对路径。
如图:
然而这样得到的路径直接复制粘贴到vs里面会直接报错,如下:
可以看出我们获取的绝对路径的表示方法是单右斜线形式的。显然opencv的imread()不支持这种方式。但是!!!经过实验发现imread()除了不支持单右斜线形式,其他斜线形式都支持!!!比如双右斜线形式、双左斜线形式、单左斜线形式、前述三种斜线混合型式都是支持的!!我想知道为什么??
看图,下面的六种方式任何一种都是支持的,都可以成功读取并显示图片。
我个人经常用的方法是第5种,相对路径法。只需要把图像文件放在工程文件夹下和.cpp文件放在一起就行了,读取的时候就可以直接用名字读取,如imread(“miao.jpg”);
最后一种命令行参数法是源码中比较常见的。设置方法是:
工程——属性——配置属性——调试——命令行参数,然后设置就行了。如图:
设置之后miao.jpg就是argv[1],2.jpg就是argv[2]。
这次的完整代码如下(路径因人而异的):
#include<opencv2opencv.hpp
using namespace cv;
int main(int argc,char* argv[])
{
Mat img;
//-- 1 --双右斜线法
//string imgpath = "C:UsersbingbuyuPicturesphotomiao1.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//bingbuyuPictures//photo//miao1.jpg";
//-- 5 --相对路径法
//string imgpath = "miao.jpg";
//-- 6 --命令行参数法
string imgpath = argv[1];
img = imread(imgpath, 1);
imshow("img", img);
waitKey(0);
return 0;
}
以上六种的运行结果,还是这只喵:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SAP CRM One Order函数CREATE_OW的设计原理
- 决策树(decision tree)
- 寻找质数—埃式筛法
- 语义分割之Dice Loss深度分析
- SAP CRM One Order函数SAVE_EC的设计原理
- SAP CRM One Order函数CHANGE_OW的设计原理
- 关于checkpoint你可能不知道的事
- SAP CRM One Order函数CRM_Object_FILL_OW的设计原理
- SAP CRM One Order header extension的缓存机制设计原理
- SAP CRM数据库表CRMD_CUMULAT_H的设计原理
- Python从入门到大师一百篇教程 | 前言:Python的前世和发展
- Java和ABAP的垃圾回收机制(Garbage Collection)比较
- Java和SAP ABAP的异常处理
- Java的字节码和ABAP load的比较
- matplotlib | Python强大的作图工具,让你从此驾驭图表(一)