//此代码是将class构造的函数写在了另一个文件中
// ************************( 主程序的代码)*****************************
#include <opencv2/opencv.hpp>
#include <iostream>
#include <quickopencv.h>//头文件
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("H2.jpg");
if (src.empty())
{
cout << "没有加载到图片" << endl;
return -1;
}
namedWindow("输入窗口", WINDOW_NORMAL);
imshow("输入窗口", src);
QuickDemo qd;
qd.colorSpaceDemo(src);//调用所构造的函数
waitKey(0);
destroyAllWindows();
return 0;
}
//*************************************头文件**********************************
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
class QuickDemo
{
public:
void colorSpaceDemo(Mat& image);
};
//******************************原文件(用于盛放构造的函数)*********************************
#include <quickopencv.h>
void QuickDemo::colorSpaceDemo(Mat& image) //此处用到“引用”
{
Mat gray, hsv;//类似于int 定义出两个量
cvtColor(image, hsv, COLOR_BGR2HSV);//把image转化为HSV的形式,再存放在hsv目标中
cvtColor(image, gray, COLOR_BGR2GRAY);//把image转化为gray的形式,再存放在gray目标中
imshow("HSV", hsv);
imshow("灰度", gray);
imwrite("E:/hsv.jpg",hsv); //把目标hsv以hsv.jpg的形式存在E盘中
imwrite("E:/gray.jpg",gray);
};
//补充c++知识:对于构造的class函数 在源文件中要写成void QuickDemo::colorSpaceDemo(Mat& image)
//的形式,不可以直接写成以下形式:
// class QuickDemo
// {
// public:
// void colorSpaceDemo(Mat& image);
// };
opencvtest.cpp为主程序代码