知识点:
1:色彩空间转换函数-cvtcolor
COLOR_BGR2GRAY=6彩色到灰度
COLOR_GRAY2BGR=8灰度到彩色
COLOR_BGR2HSV=40BGR到HSV
COLOR_HSV2BGR=54HSV到BGR
2:图像保存-imwrite
第一个参数是图像保存的路径
第二个是图像内存对象
这是第一节课的程序根据这个程序进行下列操作
#include <opencv2/opencv.hpp>
#include <iostream>--从键盘中读取数据,输入输出对象
#include"quickopencv.h"
using namespace cv;--引入openCV的命名空间CV,在后续代码中可以直接使用OPENCV中的类,无需调用CV::
using namespace std;--引入C++的命名空间std,在后续代码中可以直接使用标准库中的类,无需带哦用std::
int main(int argc, char** argv) {
Mat src = imread("C:/images/123.jpg");
if (src.empty()) {
printf("could not load image....");
return -1;
}
//namedWindow("输入图像", WINDOW_FREERATIO);
imshow("输入窗口", src);
QUickdemo qd;--创建一个名为QUickdemo的类的对象,对象名字为qd,后续代码可以用qd来调用quickdemo中定义的函数。
qd.colorSpace_Demo(src);--这行代码的意思是调用名为qd的对象的colorSpace_Demo方法,并将src作为参数传递给这个方法。
waitKey(0);
destroyAllWindows();
return 0;
}
这是简单读取图像
首先加载一个头文件
代码解析
#pragma once
#include<opencv2/opencv.hpp>
using Namespace cv;--类中的命名空间,避免命名冲突,后续可以直接在后续代码中使用该命名空间
class QUickdemo--声明一个名字为QUickdemo的类,包含了属性和方法,内部包含具体作用
在一个使用了特定命名空间的程序中定义了一个为quickdemo的类
{
public:--访问修饰符,其他类和函数可以直接访问里面的公共成员变量
void colorSpace_Demo(Mat& image);--无返回值类型,定义一个colorSpace_Demo的方法
};
之后加载一个新的项目
代码解析
#include"quickopencv.h"
void QUickdemo::colorSpace_Demo(Mat& image)
{
Mat gray, hsv;--图像MAt类型中声明了两个变量,一个gray,另一个hsv。
cvtColor(image, hsv, COLOR_BGR2HSV);--色彩空间转换函数-cvtcolor将hsv图片转化为HSV格式和BGR格式,其中格式为void cv::cvtColor(InputArray src, OutputArray dst, int code, int dstCn = 0 );
src为输入图像,dst为输出图像,code为颜色空间转换;
cvtColor(image, gray, COLOR_BGR2GRAY);
imshow("HsV", hsv);
imshow("灰度", gray);
imwrite("C:/images/hsv.png", hsv);--保存图片的路径和所保存的图片
imwrite("C:/images/grav.png", gray);
后面不通过头文件与源文件也可以实现
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("C:/images/123.jpg");
if (src.empty()) {
printf("could not load image....");
return -1;
}
//namedWindow("输入图像", WINDOW_FREERATIO);
Mat hsv, gray;
imshow("输入窗口", src);
cvtColor(src, hsv, COLOR_BGR2HSV);
cvtColor(src, gray, COLOR_BGR2GRAY);
imshow("HsV", hsv);
imshow("灰度", gray);
waitKey(0);
destroyAllWindows();
return 0;
}