上一节的开发环境配置后,就可以直接开始编写OpenCV代码了,不罗嗦,直接上代码。
一、图像加载、修改、保存
#include <opencv2\opencv.hpp>
#include <highgui.h>
using namespace cv;
int main(int argc, char** argv)
{
//读取图像
Mat image;
image = imread("C:\\Users\\Administrator\\Desktop\\test.jpg", IMREAD_UNCHANGED);//IMREAD_UNCHANGED IMREAD_GRAYSCALE IMREAD_COLOR 读取图片
Mat invertImage;
cvtColor(image, invertImage, CV_BGR2GRAY);//变灰 HLS的CV_BGR2HLS
// 创建窗口
namedWindow("Test", CV_WINDOW_AUTOSIZE);
namedWindow("InvertImage", CV_WINDOW_AUTOSIZE);
// 显示图像
imshow("Test", image);
imshow("InvertImage", invertImage);
// 点击关闭
waitKey(0);
imwrite("C:\\Users\\Administrator\\Desktop\\test1.jpg", invertImage);//保存至本地
destroyWindow("Test");
destroyWindow("InvertImage");
return 0;
}
以上代码中主要的几个知识点解释下:
1.imread("C:\\Users\\Administrator\\Desktop\\test.jpg",IMREAD_UNCHANGED);
该方法加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称。
第二个参数,表示加载的图像是什么类型,支持常见的三个参数值:
(1)IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变。
(2)IMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来。
(3)IMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来。
2.Mat类
Mat是一个图像类,支持JPG、PNG、TIFF等常见格式图像文件加载。
常见的方法有:
(1)复制到新的Mat类
Mat invertImage;
image.copyTo(invertImage);
(2)获取指定范围内的图
Mat invertImage(image, Rect(10, 10, 100, 100));
3.cvtColor( image,invertImage, CV_BGR2GRAY);
该方法的功能是把图像从一个彩色空间转换到另外一个色彩空间,有三个参数,第一个参数表示源图像、第二参数表示色彩空间转换之后的图像、第三个参数表示源和目标色彩空间如:COLOR_BGR2HLS 、COLOR_BGR2GRAY 等
4.imwrite("C:\\Users\\Administrator\\Desktop\\test1.jpg", invertImage);
该方法是将转换后的invertImage保存至指定目录。