加载图像(cv::imread)
-
imread功能是加载图像成为一个Mat对象,其中第一个参数表示图像文件名称
-
第二个参数,表示加载图像的类型,支持常见三个参数:
-
IMREAD_UNCHANGED(<0)表示加载原图,不做任何改变
-
IMREAD_GRAYSCALE(0)表示把原图作为灰度图像加载进来
-
IMREAD_COLOR(<0)表示把原图作为RGB图像加载进来
-
OpenCV支持JPG、PNG、TIFF等常见格式的图片文件加载
显示图像(cv::namedWindow 和 cv::imshow)
-
nameWindow功能是创建一个OpenCV窗口,它是由OpenCV自动创建和释放的,你无需销毁它
-
常见用法nameWindow(“Window Title”, WINDOW_AUTOSIZE)
-
WINDOW_AUTOSIZE会根据图像大小,显示窗口大小,不能人为改变窗口大小
-
WINDOW_NORMAL与QT集成的时候回使用,允许修改窗口大小
-
imshow根据窗口名称显示图像到指定窗口上去,第一个参数是窗口名称,第二个参数是Mat对象
修改图像(cv::cvtColor)
-
cvtColor的功能是将图像从一个彩色空间转换到另一个彩色空间,有三个参数,第一个参数表示源图像,第二个参数表示彩色空间转换之后的图像,第三个参数表示源图像和目标图像的空间,如:COLOR_BGR2HLS、COLOR_BGR2GRAY等
-
cvtColor(image, gray_image, COLOR_BGR2GRAY);
保存图像(cv::imwrite)
-
保存图像文件到指定目录路径
-
只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR图像才可以通过这种方式保存
-
保存PNG格式的时候可以保存透明通道的图片
-
可以指定压缩参数
示例代码
#include <iostream>
#include <opencv2/opencv.hpp>
#include <math.h>
using namespace std;
using namespace cv;
int main() {
// 加载一张普通图片
Mat src = imread("C:\\Users\\Administrator\\Desktop\\background.png");
if (src.empty()) { // 判断是否获取到了图片
printf("Could not load image!\n");
return -1;
}
// 将这张普通图片显示出来
namedWindow("opencv setup demo", WINDOW_AUTOSIZE);
imshow("opencv setup semo", src);
// 显示灰度图像
namedWindow("opencv out put window", WINDOW_AUTOSIZE);
Mat output_image;
cvtColor(src, output_image, COLOR_BGR2GRAY);
imshow("opencv out put window", output_image);
// 保存图片,具体格式按照自己写的文件后缀
imwrite("C:\\Users\\Administrator\\Desktop\\changed.png", output_image);
waitKey(0); // 让程序在这里卡住,不然会一下子退出
return 0;
}