矩阵和图像的操作
(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; }
输出结果
(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
根据英文含义很容易明白其意义
实例代码
#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; }
输出结果
to be continued
《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor