OpenCV的读取图像使用注意事项
来源:互联网 发布:大数据时代论文3000字 编辑:程序博客网 时间:2024/06/05 13:21
最近在使用OpenCV 的时候发现了一些平时没有注意的小问题,所以记录一下,以免自己下次再犯同样的错误。
一、imread读图像函数使用注意事项
在使用imread读图像的时候,大家最常用的读取的方式就是:
Mat src = imraed("src.jpg");`
其实imread函数除了一个参数是图像路径之外,还有一个就是读取图像的方式。
1.1、imread函数原型
imread函数的原型如下:C++: Mat imread(const string& filename, int flags=1 ),后面的int型参数flags的取值决定了图像被读取的方式。
(1)、当flags>0:此时图像的读取方式是按照BGR三波段的方式进行读取的。即使输入一个单波段的灰度图像,返回的Mat对象的波段数也是3。注意:这也是默认的缺省值
(2)、当flags<0:此时图像的读取方式是按照原始图像的波段数进行读取的。比如输入灰度图像读取后的Mat是单波段的,如果是RGB的图返回的3波段的BGR的Mat图像类。
(3)、当flags=0:此时图像的读取是按照灰度图像进行读取的。即使输入三波段的RGB图像,返回的Mat对象的波段数也是1,即是该RGB图灰度化之后的结果图像。
(4)、当flags缺省:此时的读取方式和flags>0的情况是一样的。
1.2、imread使用示例
string path1 = "src1.jpg"; //灰度图像string path3 = "src3.jpg"; //RGB图像//读取方式1Mat src = imread(path1); -- 按照3波段读取Mat src = imread(path3); -- 按照3波段读取//读取方式2Mat src = imread(path1, 3); -- 按照3波段读取Mat src = imread(path3, 3); -- 按照3波段读取//读取方式3Mat src = imread(path1, 0); -- 按照1波段灰度图像读取Mat src = imread(path3, 0); -- 按照1波段灰度图像读取//读取方式4Mat src = imread(path1, -1); -- 按照path1图像本身形式读取,单波段Mat src = imread(path3, -1); -- 按照path3图像本身形式读取,三波段
注意:在使用imread读取图像的时候,一定要注意图像本身的形式以及采取imread读取的方式,如果每次都是将flags缺省,比如读取图像本身是灰度图,其实是按照BGR图像读的,这样会出错。
二、imshow显示图像函数使用注意事项
error:有一次在使用imshow函数显示图像的时候,遇到了一个问题,无论怎么运行,就是无法显示图像,最后才发现,在程序的末尾忘了加waitKey()函数。
记住:imshow函数必须与waitKey()函数结合才能正确显示图像,这是一个细节,因为这个waitKey()函数太普遍了,大家有时候忘记加了,但是检查不出错误….
三、Mat类使用细节
3.1、Mat类读取图像数据和参数
Mat src = imread("src.jpg");int width = src.cols; //获取图像宽度int height = src.rows; //获取图像高度int band = src.channels(); //获取图像波段数uchar* pImgData = src.data; //获取图像存储图像灰度信息的内存的首地址
使用Mat类的成员变量和函数读取图像参数信息:
(1)、成员变量cols – 对应图像的列数 – 对应平常咱们所说的图像宽度
(2)、成员变量rows – 对应图像的行数 – 对应平常咱们所说的图像高度
(3)、成员变量data – 对应存储图像灰度值内存的首地址
(3)、成员函数channels() – 获取图像波段数
//后面有什么问题需要加的再继续加吧,这个博客就当一个笔记本吧,哈哈哈~
- OpenCV的读取图像使用注意事项
- Opencv图像的读取
- 使用opencv读取图像序列
- opencv简单的图像读取
- 在VS中使用OpenCV的imread读取图像失败
- 使用Linux的V4L2读取摄像头数据+Opencv图像处理
- vc使用opencv库 读取图像
- 关于OpenCV读取图片的注意事项
- Opencv的cvFindContours使用注意事项!!
- OpenCV:ROI使用的注意事项
- 使用Opencv的一些注意事项
- OpenCV中图像的读取与显示
- opencv读取图像中的元素的方法
- OpenCv和matlab对图像的读取
- OpenCV中图像的读取与显示
- 用OPencv读取一副图像的直方图
- opencv的imread函数无法读取图像
- OpenCV 读取灰度图像的灰度值
- java深拷贝浅拷贝
- MySql安装配置及使用入门
- 小Win,点一份APC(Apc机制详解)(一)
- 简述throw和throws的区别
- GC的简单介绍
- OpenCV的读取图像使用注意事项
- Sourcetree配置开源中国的git远程库公钥
- HTML DOM(文档对象模型)
- Error和Exception的区别
- 【EF】EF映射中的延迟加载
- 深度卷积神经网络CNNs的多GPU并行框架及其应用
- sleep()和wait()有什么区别
- Java中使用JSONArray时实现嵌套
- gdb watch