矩阵和图像的操作


(1)cvCrossProduct函数

其结构


void cvCrossProdust(//计算两个三维向量的叉积
	const CvArr* src1,
	const CvArr* src2,
	CvArr* dst
);


实例代码


#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;


int main() 
{ 
	double va[] = {3,0,0};  
	double vb[] = {0,4,0};  
	double vc[3];  
	CvMat Va=cvMat(3, 1, CV_64FC1, va);  
	CvMat Vb=cvMat(3, 1, CV_64FC1, vb);  
	CvMat Vc=cvMat(3, 1, CV_64FC1, vc);  
	cvCrossProduct(&Va, &Vb, &Vc);    
	cout <<CV_MAT_ELEM(Vc,double,0,0)<<endl;
	cout <<CV_MAT_ELEM(Vc,double,1,0)<<endl;
	cout <<CV_MAT_ELEM(Vc,double,2,0)<<endl;
	getchar();
	return 0;
}


输出结果


opencv 接口文档 opencv docs_opencv 接口文档


(2)cvCvtColor函数

其结构


void cvCvtColor(//改变图像色彩空间
	const CvArr* src,
	CvArr* dst,
	int code
);


当中code是色彩空间转换的标记其标记例如以下


CV_BGR2RGB

CV_RGB2BGR

CV_RGBA2BGRA

CV_BGRA2RGBA         在RGB或BGR色彩空间之间转换(包含或者不包含alpha 通道) 

CV_RGB2RGBA

CV_BGR2BGRA           在RGB或BGR图像中增加alpha 通道

CV_RGBA2RGB

CV_BGRA2BGR           从RGB或BGR图像中删除alpha 通道

CV_RGB2BGRA

CV_RGBA2BGR

CV_BGRA2RGB

CV_BGR2RGBA            增加或者移除alpha通道时,转换RGB到BGR 色彩空间

CV_RGB2GRAY

CV_BGR2GRAY            转换RGB或者BGR色彩空间为灰度空间 

CV_GRAY2RGB

CV_GRAY2BGR

CV_RGBA2GRAY

CV_BGRA2GRAY         转换灰度为RGB或者BGR色彩空间(在进程中选择移除alpha通道) 

CV_GRAY2RGBA

CV_GRAY2BGRA         转换灰度为RGB或者BGR色彩空间而且增加alpha通道

CV_RGB2BGR565

CV_BGR2BGR565

CV_BGR5652RGB

CV_BGR5652BGR

CV_RGBA2BGR565

CV_BGRA2BGR565

CV_BGR5652RGBA

CV_BGR5652BGRA        在从RGB或者BGR色彩空间转换到BGR565彩色图画时,选择增加或者移除 alpha通道 (16位图) 

CV_GRAY2BGR565

CV_BGR5652GRAY         转换灰度为BGR565彩色图像或者反变换(16位图) 

CV_RGB2BGR555

CV_BGR2BGR555

CV_BGR5552RGB

CV_BGR5552BGR

CV_RGBA2BGR555

CV_BGRA2BGR555          在从RGB或者BGR色彩空间转换到BGR555色彩空间时,选择增加或者移除alpha通道(16位图)

CV_BGR5552RGBA

CV_BGR5552BGRA 

CV_GRAY2BGR555

CV_BGR5552GRAY          转换灰度到BGR555色彩空间或者反变换(16位图)

CV_RGB2XYZ

CV_BGR2XYZ

CV_XYZ2RGB

CV_XYZ2BGR                    转换RGB或者BGR色彩空间到CIE XYZ色彩空间或者反变换(Rec 709和D65 白点)

CV_RGB2YCrCb 

CV_BGR2YCrCb 

CV_YCrCb2RGB 

CV_YCrCb2BGR                转换RGB 或者BGR色彩空间到luma-chroma (aka YCC)色彩空间

CV_RGB2HSV 

CV_BGR2HSV 

CV_HSV2RGB 

CV_HSV2BGR                    转换RGB或者BGR色彩空间到HSV(hue。saturation,value)色彩空间或反变换

CV_RGB2HLS 

CV_BGR2HLS 

CV_HLS2RGB 

CV_HLS2BGR                     转换RGB或者BGR色彩空间到HLS(hue,Lightness,saturation)色彩空间或反变换

CV_RGB2Lab 

CV_BGR2Lab 

CV_Lab2RGB 

CV_Lab2BGR                      转换RGB或者BGR色彩空间到CIE LAB色彩空间或反变换

CV_RGB2Luv 

CV_BGR2Luv 

CV_Luv2RGB 

CV_Luv2BGR                        转换RGB或者BGR色彩空间到CIE Luv色彩空间

CV_BayerBG2RGB 

CV_BayerGB2RGB               转换Bayer模式(单通道) 到RGB或者BGR色彩空间

CV_BayerRG2RGB 

CV_BayerGR2RGB 

CV_BayerBG2BGR 

CV_BayerGB2BGR 

CV_BayerRG2BGR 

CV_BayerGR2BGR

依据英文含义非常easy明确其意义


实例代码



#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	IplImage  *src2,*src3;
	src2=cvLoadImage("3.jpg");
	src3=cvLoadImage("7.jpg");


	cvCvtColor(src2,src3,CV_RGB2HSV);
	cvShowImage( "測试2", src2);
	cvShowImage( "測试3", src3);
    cvWaitKey();
	return 0;
}


输出结果


opencv 接口文档 opencv docs_色彩空间_02


to be continued