注:OpenCV版本为3.4.2,版本不同可能头文件和函数会有一些差异,学习OpenCV前需要有图像处理相关的基础知识,相关书籍如:数字图像处理_第三版——冈萨雷斯 。 新手刚发博客,如果有什么不足的地方欢迎大家指正,可以一起学习交流!
读取图像(cv::imread)
官方解释:
使用函数 cv:imread() 读入图像。这幅图像应该在此程序的工作路径,
或者给函数提供完整路径,
第二个参数是要告诉函数应该如何读取这幅图片。
• IMREAD_COLOR(>0):读入一副彩色图像。图像的透明度会被忽略,
这是默认参数。
• IMREAD_GRAYSCALE(0):以灰度模式读入图像
• IMREAD_UNCHANGED(<0):读入一幅图像,并且包括图像的 alpha 通道
显示图像(cv::namedWindos和cv:imshow)
创建窗口(cv::namedWindos)
常见的用法namedWindow("WindosTitle ",WINDOW_AUTOSIZE)
WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
WINDOW_NORMAL跟QT继承的时候会使用,允许修改窗口大小
显示图像(cv::imshow)
使用方法imshow(“WindosTitle”,ShowImg)
修改图像(cv::cvtColor)
函数形式: void cvCvtColor( const CvArr* src, CvArr* dst, int code );
功能说明:cvtcolor()函数是一个颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间转换。也可以转换为灰度图。
code 常用参数如CV_RGB2GRAY等,具体可查阅相关资料,因为参数太多了。。。
注释:灰度图像相关博客解释
RGB、HSV色彩空间
保存图像(cv::imwrite)
函数原型:bool cv::imwrite(const String & filename,InputArray img,const std::vector & params = std::vector())
函数参数:
filename:需要保存图像的文件名,要保存图片为哪种格式,就带什么后缀。 img:要保存的图像。
params:表示为特定格式保存的参数编码。(它有一个默认值std::vector< int >(),所以一般情况下不用写。)
使用函数imwrite() 来保存一个图像。首先需要一个文件名,之后才
是你要保存的图像。
样例代码
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
Mat OrImg,dst;
OrImg = imread("D:\\File\\G\\images\\shiyuan.png", IMREAD_COLOR);
//判断图像读取
if (!OrImg.data) {
printf("Could not load image...\n");
}
//显示原图像
namedWindow("OrImg", WINDOW_AUTOSIZE);
imshow("OrImg", OrImg);
//修改为灰度图像
cvtColor(OrImg, dst, CV_RGB2GRAY);
//显示修改图像
namedWindow("GRAYImg", WINDOW_AUTOSIZE);
imshow("GRAYImg", dst);
//保存图像
bool i = imwrite("D:\\File\\G\\images\\shiyuanGray.png", dst);
if (i) {
cout << "保存成功";
}
else {
cout << "保存失败";
}
//不加这个会闪退
cvWaitKey(0);
}
效果图
参考来源
本人也是学习opencv不久,如有错误,请各位前辈指导。
相关参考来自OpenCV官方教程中文版,大佬们的博客和B站视频:https://www.bilibili.com/video/BV1uW411d7Wf?p=2