02_Opencv加载、修改、保存图片
02_Opencv加载、修改、保存图片
一.使用cv::imread函数加载图像
imread:通过文件的方式加载图像,其中第一个参数为待加载图像文件的路径,第二个参数表示加载的图像类型,常见的取值如下:
- IMREAD_UNCHANGED(<0):加载原图,不做任何改变
- IMREAD_GRAYSCALE(=0):把原图作为灰度图像加载
- IMREAD_COLOR(>0):把原图作为RGB图像加载
二.使用cv::namedWindow函数与cv::imshow函数显示图像
- namedWindow:创建一个opencv窗口,它是由opencv自动创建与释放,不需要手动释放它
- 常见用法:namedWindow(“window title”, CV_WINDOW_AUTOSIZE);
- CV_WINDOW_AUTOSIZE:会自动根据图像大小,调整窗口大小,不能人为的改变窗口大小
- CV_WINDOW_NORMAL:与QT集成时使用,允许修改窗口大小
- imshow:根据窗口名称显示图像到指定的窗口,第一个参数是窗口名称(与namedWindow的第一个参数对应),第二个参数是带显示图像的Mat对象
三.使用cv::cvtColor函数修改图像
cvtColor:把图像从一个色彩空间转换到另一个色彩空间,第一个参数表示源图像的Mat对象,第二个参数表示转换了色彩空间的图像的Mat对象,第三个参数表示源图像和目标图像的色彩空间,如:COLOR_BGR2HLS,COLOR_BGR2GRAY等
四.使用cv::imwrite函数保存图像
- 只有8位、16位的PNG、JPG、Tiff文件格式,并且是单通道或者三通道的BGR的图像才可以通过这种方式保存
- 保存PNG格式的图像时,可以保存具有透明通道的图片
- 可以指定压缩参数
- 第一个参数为文件保存路径,第二个参数为待保存的图像的Mat对象
五.示例
Mat src = imread("/Users/zhixingao/Downloads/android/OpencvForCPlus/素材/莱娜.png");
if(src.empty()) {
printf("could read image...\n");
return -1;
}
namedWindow("source image", CV_WINDOW_AUTOSIZE);
imshow("source image", src);
Mat dst;
cvtColor(src, dst, COLOR_BGR2GRAY);
namedWindow("output image", CV_WINDOW_AUTOSIZE);
imshow("output image", dst);
imwrite("/Users/zhixingao/Downloads/android/OpencvForCPlus/素材/processor/莱娜灰度.png", dst);
waitKey(0);
return 0;