本文是自己学习图像处理的一个编程,关于多张图片的HSV的比较,确定多张图片与参考图片的H值、S值、V值的差异,从而去做一些其他工程。
以下为代码段:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include<vector>
using namespace std;
using namespace cv;
double p[3];
void Hvalue(IplImage* src, int maxIterations,int count)
{
IplImage* hsv = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 3);
//将RGB图像转为HSV图像的函数
cvCvtColor(src, hsv, CV_BGR2HSV);
double sum1 = 0, sum2 = 0, sum3 = 0;
IplImage* Himg = cvCreateImage(cvGetSize(hsv), IPL_DEPTH_8U, 1);
IplImage* Simg = cvCreateImage(cvGetSize(hsv), IPL_DEPTH_8U, 1);
IplImage* Vimg = cvCreateImage(cvGetSize(hsv), IPL_DEPTH_8U, 1);
//cvSplit( const CvArr* src,CvArr* dst0,CvArr* dst1,CvArr* dst2,CvArr* dst3 )函数
cvSplit(hsv, Vimg, Simg, Himg, 0);
for (int y = 0; y < hsv->height; y++)
{
for (int x = 0; x < hsv->width; x++)
{
float value1 = cvGetReal2D(Himg, y, x);
float value2 = cvGetReal2D(Simg, y, x);
float value3 = cvGetReal2D(Vimg, y, x);
sum1 += value1;
sum2 += value2;
sum3 += value3;
}
sum1 = sum1 / (hsv->height*hsv->width);
sum2