一、加载图像(cv::imread):
1.imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像类型;
2.支持常见的三个参数值:
1)IMREAD_UNCHANGED( <0 )表示加载原图,不做任何改变;
2)IMEREAD_GRAYSCALE( 0 )表示作为灰度图像加载;
3)IMREAD_COLOR( >0 )表示把原图作为RGB图像加载。
二、修改图像(cv::cvtColor):
改变颜色空间,从一个颜色空间改变为另一个颜色空间。
三、显示图像(cv::namedWindow与cv::imshow):
1.namedWindow功能是创建一个OpenCV窗口,由OpenCV自动创建与释放,无需人为去销毁;
2.常见用法namedWindow("Window Title",WINDOW_AUTOSIZE)
1)WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小;
2)WINDOW_NORMAL和QT集成的时候会使用,允许修改窗口大小;
3)imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象。
四、保存图像(cv::imwrite):
1.保存图像文件到指定目录路径;
2.只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像才可以通过这种方式保存;
3.保存PNG格式的时候可以保存透明通道的图片;
4.可以指定压缩参数。
五、代码:
1.将图片作为灰度图片加载:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src = imread("F:/laboratory/OpenCV/pictures/learning/test.jpg",IMREAD_GRAYSCALE);//imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像类型
//IMEREAD_GRAYSCALE(0)表示作为灰度图像加载
if (src.empty()) {
printf("Couldn't load image...\n");
return -1;
}
namedWindow("OpenCV setup demo", CV_WINDOW_AUTOSIZE);//namedWindow功能是创建一个OpenCV窗口,由OpenCV自动创建与释放,无需人为去销毁
//WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
imshow("OpenCV setuo demo", src);//imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象
waitKey(0);
return 0;
}
2.色彩空间转换:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src = imread("F:/laboratory/OpenCV/pictures/learning/test.jpg");//imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像类型
//IMEREAD_GRAYSCALE(0)表示作为灰度图像加载
if (src.empty()) {
printf("Couldn't load image...\n");
return -1;
}
namedWindow("OpenCV setup demo", CV_WINDOW_AUTOSIZE);//namedWindow功能是创建一个OpenCV窗口,由OpenCV自动创建与释放,无需人为去销毁
//WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
imshow("OpenCV setuo demo", src);//imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象
Mat output_image;
cvtColor(src, output_image, CV_BGR2GRAY);//cv::cvtColor改变颜色空间,从一个颜色空间改变为另一个颜色空间
namedWindow("output window", CV_WINDOW_AUTOSIZE);
imshow("output windows", output_image);
waitKey(0);//在接收到键盘上的信号后才关闭窗口
return 0;
}
3.保存图像:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src = imread("F:/laboratory/OpenCV/pictures/learning/test.jpg");//imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数表示加载的图像类型
//IMEREAD_GRAYSCALE(0)表示作为灰度图像加载
if (src.empty()) {
printf("Couldn't load image...\n");
return -1;
}
namedWindow("OpenCV setup demo", CV_WINDOW_AUTOSIZE);//namedWindow功能是创建一个OpenCV窗口,由OpenCV自动创建与释放,无需人为去销毁
//WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
imshow("OpenCV setuo demo", src);//imshow根据窗口名称显示图像到指定窗口,第一个参数是窗口名称,第二个参数是Mat对象
namedWindow("output window", CV_WINDOW_AUTOSIZE);
Mat output_image;
cvtColor(src, output_image, CV_BGR2GRAY);//cv::cvtColor改变颜色空间,从一个颜色空间改变为另一个颜色空间
imshow("output windows", output_image);
imwrite("F:/laboratory/OpenCV/pictures/learning/test_save.jpg",output_image);//imwrite功能是保存图片在指定路径,第一个参数是路径和文件名,第二个参数是所保存图片的对象名
waitKey(0);//在接收到键盘上的信号后才关闭窗口
return 0;
}