数字图像处理与OpenCV(2)--载入、显示、保存及修改图像
来源:互联网 发布:什么是互联网软件开发 编辑:程序博客网 时间:2024/06/14 12:47
刚开始准备先学一下OpenCV的一些基本操作,到后面一些再结合数字图像处理来分析一下OpenCV是如何工作的,今天先学习下OpenCV的图像加载、显示和保存(这里用的是OpenCV3.2.0版本)。
第一件事是声明一个表示图像的变量,这个变量是cv::Mat类型。
加载图像(imread):
imread:功能是加载图像文件为一个Mat对象。
函数原型:Mat imread( const String& filename, int flags = IMREAD_COLOR );
第一个参数表示图像文件名称;
第二个参数表示加载为什么类型,常用的三个类型:IMREAD_UNCHANGED(<0)表示加载原图(不做任何改变),IMREAD_GRAYSCALE(0)表示把原图作为灰度图像加载进来,IMREAD_COLOR(>0)(默认是这个)表示把原图作为RGB图像加载进来。
在使用该图像前需要检查图像是否被正确读取,检测方法如下:
if(!image.data){ //图像尚未创建}
此处成员变量data实际上是指向已分配的内存块的指针,包括图像数据,当不存在数据时,它被简单的设置为0.
保存图像(imwrite):
函数原型:bool imwrite( const String& filename, InputArray img,
const std::vector<int>& params = std::vector<int>());
imwrite:功能是保存图像到指定目录路径文件
第一个参数表示保存的文件路径和名称;(以后缀来决定保存哪种格式的图片文件)
第二个参数表示要保存的图像对象。
显示图像(imshow):
函数原型:void imshow(const String& winname, InputArray mat);
函数原型:void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
namedWindow是用来创建一个显示窗口,一般用法:namedWindow(“output img HLS”, CV_WINDOW_AUTOSIZE); 也可以不创建,那么在imshow的时候opencv会自动创建。
imshow,第一个参数是窗口的名字,第二个参数就是要显示的图片对象。
修改图像:
OpenCV提供了很多处理函数,先简单介绍几个
函数原型:void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );
cvtColor:功能是把图像从一个色彩空间转换到另外一个色彩空间。
第一个参数表示源图像;
第二个参数表示色彩空间转换后的图像(目标图像);
第三个参数表示源和目标色彩空间,比如:COLOR_BGR2HLS(RGB色彩空间转HLS色彩空间),COLOR_BGR2HSV(RGB色彩空间转HSV色彩空间),COLOR_BGR2GRAY(RGB色彩空间转灰度图)
第四个参数默认为0。(不知道是啥)
函数原型:void flip(InputArray src, OutputArray dst, int flipCode);
flip:功能是把图像水平翻转。
第一个参数表示原图像;
第二个参数表示水平翻转后的图像(目标图像);
第三个参数表示翻转模式,flipCode==0垂直翻转(沿X轴翻转),flipCode>0水平翻转(沿Y轴翻转),flipCode<0水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)
OpenCV3.2.0版本加载图像、修改图像、保存图像代码如下:
#include <opencv2/opencv.hpp>using namespace cv; //使用OpenCV命名空间int main() {//图像加载Mat src1 = imread("1.jpg"); //默认加载,按照IMREAD_COLOR(RGB图像方式)Mat src2 = imread("1.jpg", IMREAD_GRAYSCALE); //灰度图加载namedWindow("input img RGB", CV_WINDOW_AUTOSIZE);namedWindow("input img GRAY", CV_WINDOW_AUTOSIZE);imshow("input img RGB", src1);imshow("input img GRAY", src2);//图像修改Mat dest_result;flip(src1, dest_result, 1);//转为水平翻转的目标图像namedWindow("output img result", CV_WINDOW_AUTOSIZE);//创建一个显示用窗口imshow("output img result", dest_result);Mat dest_HSV; //转为HSV的目标图像cvtColor(src1, dest_HSV, COLOR_BGR2HSV);namedWindow("output img HSV", CV_WINDOW_AUTOSIZE);//创建一个显示用窗口imshow("output img HSV", dest_HSV);Mat dest_HLS; //转为HLS的目标图像cvtColor(src1, dest_HLS, COLOR_BGR2HLS);namedWindow("output img HLS", CV_WINDOW_AUTOSIZE);imshow("output img HLS", dest_HLS);Mat dest_GRAY; //转为灰度图的目标图像cvtColor(src1, dest_GRAY, COLOR_BGR2GRAY);//namedWindow("output img GRAY"); //没有建立显示窗口,opencv会自动创建imshow("output img GRAY", dest_GRAY);//图像保存imwrite("1_result.bmp", dest_result);imwrite("1_gray.bmp", dest_GRAY);imwrite("1_hls.bmp", dest_HLS);imwrite("1_hsv.bmp", dest_HSV);waitKey(0);return 0;}
- 数字图像处理与OpenCV(2)--载入、显示、保存及修改图像
- opencv学习笔记2——载入,显示,复制,旋转,保存图像及灰度图
- OpenCV--图像的载入-显示-保存
- python数字图像处理(2):图像的读取、显示与保存
- python数字图像处理(2):图像的读取、显示与保存
- python数字图像处理(2):图像的读取、显示与保存
- python数字图像处理(2):图像的读取、显示与保存
- Opencv2:1.5 载入、显示及保存图像
- OpenCv图像载入显示
- OpenCV--图像的加载、显示、修改与保存
- OpenCV Python 图像的载入、显示和保存
- opencv学习笔记 一 载入、显示和保存图像
- Opencv HighGUI函数_载入,保存,显示图像
- OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并
- OpenCV 图像的载入,显示,初级图像混合与输出
- opencv2—(1)载入、显示及保存图像
- python之cv2与图像的载入、显示和保存
- opencv学习(1)图像的载入、显示与输出
- 【study】socket结合僵尸进程的处理
- c++多态,回调,和策略模式
- Java反射(三):java获取方法信息
- 动脉硬化:背景、检测手段和我们的工作
- C/C++堆栈指引
- 数字图像处理与OpenCV(2)--载入、显示、保存及修改图像
- JSON字符串
- ActiveMQ实战(二)--ActiveMQ的通信方式之P2P点对点通信(point-to-point)
- 树莓派3 上安装运行Android Things系统
- Retrofit2+Rxjava2+nucleus5(简化Presenter)+ButterKnife(减少findViewById使用)
- OSG学习:使用OSG中预定义的几何体
- React 的无状态函数
- git segmentation fault
- 废人