怎样访问MAT图形容器中的YUY2矩阵旋转变换公式元素

拒绝访问 | www.colabug.com | 百度云加速
请打开cookies.
此网站 (www.colabug.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(f954376-ua98).
重新安装浏览器,或使用别的浏览器opencv 3.0 图像格式转换 cvtColor
关于如何将灰度图转化为彩图(伪彩),类似于matlab的 imagesc() 。
言归正传:
cvtColor的功能是将图像的格式作转换
根据opencv 2.4.9的官方文档
cvtColor 有以下功能:
The conventional ranges for R, G, and B channel values are:
0 to 255 for CV_8U images
0 to 65535 for CV_16U images
0 to 1 for CV_32F images
GRAY ( CV_BGR2GRAY, CV_RGB2GRAY, CV_GRAY2BGR, CV_GRAY2RGB )
CIE XYZ.Rec 709 with D65 white point ( CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB )
YCrCb JPEG (or YCC) ( CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB )
HSV ( CV_BGR2HSV, CV_RGB2HSV, CV_HSV2BGR, CV_HSV2RGB )
HLS ( CV_BGR2HLS, CV_RGB2HLS, CV_HLS2BGR, CV_HLS2RGB )
CIE L*a*b* ( CV_BGR2Lab, CV_RGB2Lab, CV_Lab2BGR, CV_Lab2RGB )
CIE L*u*v* ( CV_BGR2Luv, CV_RGB2Luv, CV_Luv2BGR, CV_Luv2RGB )
RGB ( CV_BayerBG2BGR, CV_BayerGB2BGR, CV_BayerRG2BGR, CV_BayerGR2BGR,V_BayerBG2RGB, CV_BayerGB2RGB, CV_BayerRG2RGB, CV_BayerGR2RGB
在opencv3.0 中,格式的选项很多。
具体可查阅代码type_c.h 的 line 87:
CV_BGR2BGRA
CV_RGB2RGBA
=CV_BGR2BGRA,
CV_BGRA2BGR
CV_RGBA2RGB
=CV_BGRA2BGR,
CV_BGR2RGBA
CV_RGB2BGRA
=CV_BGR2RGBA,
CV_RGBA2BGR
CV_BGRA2RGB
=CV_RGBA2BGR,
CV_BGR2RGB
CV_RGB2BGR
=CV_BGR2RGB,
CV_BGRA2RGBA
CV_RGBA2BGRA
=CV_BGRA2RGBA,
CV_BGR2GRAY
CV_RGB2GRAY
CV_GRAY2BGR
CV_GRAY2RGB
=CV_GRAY2BGR,
CV_GRAY2BGRA
CV_GRAY2RGBA
=CV_GRAY2BGRA,
CV_BGRA2GRAY
CV_RGBA2GRAY
CV_BGR2BGR565
CV_RGB2BGR565
CV_BGR5652BGR
CV_BGR5652RGB
CV_BGRA2BGR565 =16,
CV_RGBA2BGR565 =17,
CV_BGR5652BGRA =18,
CV_BGR5652RGBA =19,
CV_GRAY2BGR565 =20,
CV_BGR5652GRAY =21,
CV_BGR2BGR555
CV_RGB2BGR555
CV_BGR5552BGR
CV_BGR5552RGB
CV_BGRA2BGR555 =26,
CV_RGBA2BGR555 =27,
CV_BGR5552BGRA =28,
CV_BGR5552RGBA =29,
CV_GRAY2BGR555 =30,
CV_BGR5552GRAY =31,
CV_BGR2XYZ
CV_RGB2XYZ
CV_XYZ2BGR
CV_XYZ2RGB
CV_BGR2YCrCb
CV_RGB2YCrCb
CV_YCrCb2BGR
CV_YCrCb2RGB
CV_BGR2HSV
CV_RGB2HSV
CV_BGR2Lab
CV_RGB2Lab
CV_BayerBG2BGR =46,
CV_BayerGB2BGR =47,
CV_BayerRG2BGR =48,
CV_BayerGR2BGR =49,
CV_BayerBG2RGB =CV_BayerRG2BGR,
CV_BayerGB2RGB =CV_BayerGR2BGR,
CV_BayerRG2RGB =CV_BayerBG2BGR,
CV_BayerGR2RGB =CV_BayerGB2BGR,
CV_BGR2Luv
CV_RGB2Luv
CV_BGR2HLS
CV_RGB2HLS
CV_HSV2BGR
CV_HSV2RGB
CV_Lab2BGR
CV_Lab2RGB
CV_Luv2BGR
CV_Luv2RGB
CV_HLS2BGR
CV_HLS2RGB
CV_BayerBG2BGR_VNG =62,
CV_BayerGB2BGR_VNG =63,
CV_BayerRG2BGR_VNG =64,
CV_BayerGR2BGR_VNG =65,
CV_BayerBG2RGB_VNG =CV_BayerRG2BGR_VNG,
CV_BayerGB2RGB_VNG =CV_BayerGR2BGR_VNG,
CV_BayerRG2RGB_VNG =CV_BayerBG2BGR_VNG,
CV_BayerGR2RGB_VNG =CV_BayerGB2BGR_VNG,
CV_BGR2HSV_FULL = 66,
CV_RGB2HSV_FULL = 67,
CV_BGR2HLS_FULL = 68,
CV_RGB2HLS_FULL = 69,
CV_HSV2BGR_FULL = 70,
CV_HSV2RGB_FULL = 71,
CV_HLS2BGR_FULL = 72,
CV_HLS2RGB_FULL = 73,
CV_LBGR2Lab
CV_LRGB2Lab
CV_LBGR2Luv
CV_LRGB2Luv
CV_Lab2LBGR
CV_Lab2LRGB
CV_Luv2LBGR
CV_Luv2LRGB
CV_BGR2YUV
CV_RGB2YUV
CV_YUV2BGR
CV_YUV2RGB
CV_BayerBG2GRAY = 86,
CV_BayerGB2GRAY = 87,
CV_BayerRG2GRAY = 88,
CV_BayerGR2GRAY = 89,
//YUV 4:2:0 formats family
CV_YUV2RGB_NV12 = 90,
CV_YUV2BGR_NV12 = 91,
CV_YUV2RGB_NV21 = 92,
CV_YUV2BGR_NV21 = 93,
CV_YUV420sp2RGB = CV_YUV2RGB_NV21,
CV_YUV420sp2BGR = CV_YUV2BGR_NV21,
CV_YUV2RGBA_NV12 = 94,
CV_YUV2BGRA_NV12 = 95,
CV_YUV2RGBA_NV21 = 96,
CV_YUV2BGRA_NV21 = 97,
CV_YUV420sp2RGBA = CV_YUV2RGBA_NV21,
CV_YUV420sp2BGRA = CV_YUV2BGRA_NV21,
CV_YUV2RGB_YV12 = 98,
CV_YUV2BGR_YV12 = 99,
CV_YUV2RGB_IYUV = 100,
CV_YUV2BGR_IYUV = 101,
CV_YUV2RGB_I420 = CV_YUV2RGB_IYUV,
CV_YUV2BGR_I420 = CV_YUV2BGR_IYUV,
CV_YUV420p2RGB = CV_YUV2RGB_YV12,
CV_YUV420p2BGR = CV_YUV2BGR_YV12,
CV_YUV2RGBA_YV12 = 102,
CV_YUV2BGRA_YV12 = 103,
CV_YUV2RGBA_IYUV = 104,
CV_YUV2BGRA_IYUV = 105,
CV_YUV2RGBA_I420 = CV_YUV2RGBA_IYUV,
CV_YUV2BGRA_I420 = CV_YUV2BGRA_IYUV,
CV_YUV420p2RGBA = CV_YUV2RGBA_YV12,
CV_YUV420p2BGRA = CV_YUV2BGRA_YV12,
CV_YUV2GRAY_420 = 106,
CV_YUV2GRAY_NV21 = CV_YUV2GRAY_420,
CV_YUV2GRAY_NV12 = CV_YUV2GRAY_420,
CV_YUV2GRAY_YV12 = CV_YUV2GRAY_420,
CV_YUV2GRAY_IYUV = CV_YUV2GRAY_420,
CV_YUV2GRAY_I420 = CV_YUV2GRAY_420,
CV_YUV420sp2GRAY = CV_YUV2GRAY_420,
CV_YUV420p2GRAY = CV_YUV2GRAY_420,
//YUV 4:2:2 formats family
CV_YUV2RGB_UYVY = 107,
CV_YUV2BGR_UYVY = 108,
//CV_YUV2RGB_VYUY = 109,
//CV_YUV2BGR_VYUY = 110,
CV_YUV2RGB_Y422 = CV_YUV2RGB_UYVY,
CV_YUV2BGR_Y422 = CV_YUV2BGR_UYVY,
CV_YUV2RGB_UYNV = CV_YUV2RGB_UYVY,
CV_YUV2BGR_UYNV = CV_YUV2BGR_UYVY,
CV_YUV2RGBA_UYVY = 111,
CV_YUV2BGRA_UYVY = 112,
//CV_YUV2RGBA_VYUY = 113,
//CV_YUV2BGRA_VYUY = 114,
CV_YUV2RGBA_Y422 = CV_YUV2RGBA_UYVY,
CV_YUV2BGRA_Y422 = CV_YUV2BGRA_UYVY,
CV_YUV2RGBA_UYNV = CV_YUV2RGBA_UYVY,
CV_YUV2BGRA_UYNV = CV_YUV2BGRA_UYVY,
CV_YUV2RGB_YUY2 = 115,
CV_YUV2BGR_YUY2 = 116,
CV_YUV2RGB_YVYU = 117,
CV_YUV2BGR_YVYU = 118,
CV_YUV2RGB_YUYV = CV_YUV2RGB_YUY2,
CV_YUV2BGR_YUYV = CV_YUV2BGR_YUY2,
CV_YUV2RGB_YUNV = CV_YUV2RGB_YUY2,
CV_YUV2BGR_YUNV = CV_YUV2BGR_YUY2,
CV_YUV2RGBA_YUY2 = 119,
CV_YUV2BGRA_YUY2 = 120,
CV_YUV2RGBA_YVYU = 121,
CV_YUV2BGRA_YVYU = 122,
CV_YUV2RGBA_YUYV = CV_YUV2RGBA_YUY2,
CV_YUV2BGRA_YUYV = CV_YUV2BGRA_YUY2,
CV_YUV2RGBA_YUNV = CV_YUV2RGBA_YUY2,
CV_YUV2BGRA_YUNV = CV_YUV2BGRA_YUY2,
CV_YUV2GRAY_UYVY = 123,
CV_YUV2GRAY_YUY2 = 124,
//CV_YUV2GRAY_VYUY = CV_YUV2GRAY_UYVY,
CV_YUV2GRAY_Y422 = CV_YUV2GRAY_UYVY,
CV_YUV2GRAY_UYNV = CV_YUV2GRAY_UYVY,
CV_YUV2GRAY_YVYU = CV_YUV2GRAY_YUY2,
CV_YUV2GRAY_YUYV = CV_YUV2GRAY_YUY2,
CV_YUV2GRAY_YUNV = CV_YUV2GRAY_YUY2,
// alpha premultiplication
CV_RGBA2mRGBA = 125,
CV_mRGBA2RGBA = 126,
CV_RGB2YUV_I420 = 127,
CV_BGR2YUV_I420 = 128,
CV_RGB2YUV_IYUV = CV_RGB2YUV_I420,
CV_BGR2YUV_IYUV = CV_BGR2YUV_I420,
CV_RGBA2YUV_I420 = 129,
CV_BGRA2YUV_I420 = 130,
CV_RGBA2YUV_IYUV = CV_RGBA2YUV_I420,
CV_BGRA2YUV_IYUV = CV_BGRA2YUV_I420,
CV_RGB2YUV_YV12
CV_BGR2YUV_YV12
CV_RGBA2YUV_YV12 = 133,
CV_BGRA2YUV_YV12 = 134,
// Edge-Aware Demosaicing
CV_BayerBG2BGR_EA = 135,
CV_BayerGB2BGR_EA = 136,
CV_BayerRG2BGR_EA = 137,
CV_BayerGR2BGR_EA = 138,
CV_BayerBG2RGB_EA = CV_BayerRG2BGR_EA,
CV_BayerGB2RGB_EA = CV_BayerGR2BGR_EA,
CV_BayerRG2RGB_EA = CV_BayerBG2BGR_EA,
CV_BayerGR2RGB_EA = CV_BayerGB2BGR_EA,
CV_COLORCVT_MAX
【OpenCV3】颜色空间转换——cv::cvtColor()详解
OpenCV 颜色空间转换参数CV_BGR2GRAY改变
OpenCV | YUV420_NV21 转 BGR
没有更多推荐了,zz:基于 OpenCV 的矩阵运算 (CvMat)
OpenCV有针对矩阵操作的C语言函数. 许多其他方法提供了更加方便的C++接口,其效率与OpenCV一样.
OpenCV将向量作为1维矩阵处理.
矩阵按行存储,每行有4字节的校整.
分配矩阵空间:
CvMat* cvCreateMat(int rows, int cols, int type);type: 矩阵元素类型. 格式为CV_&bit_depth&(S|U|F)C&number_of_channels&.
例如: CV_8UC1 表示8位无符号单通道矩阵, CV_32SC2表示32位有符号双通道矩阵.例程:CvMat* M = cvCreateMat(4,4,CV_32FC1);
释放矩阵空间:
CvMat* M = cvCreateMat(4,4,CV_32FC1);
cvReleaseMat(&M);
CvMat* M1 = cvCreateMat(4,4,CV_32FC1);
CvMat* M2;
M2=cvCloneMat(M1);
初始化矩阵:
double a[] = { 1,
8, 9, 10, 11, 12 };
CvMat Ma=cvMat(3, 4, CV_64FC1, a);
另一种方法:
cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a);
初始化矩阵为单位阵:
CvMat* M = cvCreateMat(4,4,CV_32FC1);
cvSetIdentity(M); // 这里似乎有问题,不成功
存取矩阵元素
假设需要存取一个2维浮点矩阵的第(i,j)个元素.
间接存取矩阵元素:
cvmSet(M,i,j,2.0); // Set M(i,j)
t = cvmGet(M,i,j); // Get M(i,j)
直接存取,假设使用4-字节校正:
= cvCreateMat(4,4,CV_32FC1);
float *data = M-&data.
data[i*n+j] = 3.0;
直接存取,校正字节任意:
= cvCreateMat(4,4,CV_32FC1);
= M-&step/sizeof(float);
float *data = M-&data.
(data+i*step)[j] = 3.0;
直接存取一个初始化的矩阵元素:
double a[16];
CvMat Ma = cvMat(3, 4, CV_64FC1, a);
a[i*4+j] = 2.0; // Ma(i,j)=2.0;
矩阵/向量操作
矩阵-矩阵操作:
CvMat *Ma, *Mb, *Mc;
cvAdd(Ma, Mb, Mc);
cvSub(Ma, Mb, Mc);
cvMatMul(Ma, Mb, Mc);
按元素的矩阵操作:
CvMat *Ma, *Mb, *Mc;
cvMul(Ma, Mb, Mc);
cvDiv(Ma, Mb, Mc);
cvAddS(Ma, cvScalar(-10.0), Mc); // Ma.-10 -& Mc
double va[] = {1, 2, 3};
double vb[] = {0, 0, 1};
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);
double res=cvDotProduct(&Va,&Vb); // 点乘:
Va . Vb -& res
cvCrossProduct(&Va, &Vb, &Vc);
// 向量积: Va x Vb -& Vc
end{verbatim}
注意 Va, Vb, Vc 在向量积中向量元素个数须相同.
单矩阵操作:
CvMat *Ma, *Mb;
cvTranspose(Ma, Mb);
// transpose(Ma) -& Mb (不能对自身进行转置)
CvScalar t = cvTrace(Ma); // trace(Ma) -& t.val[0]
double d = cvDet(Ma);
// det(Ma) -& d
cvInvert(Ma, Mb);
// inv(Ma) -& Mb
非齐次线性系统求解:
= cvCreateMat(3,3,CV_32FC1);
= cvCreateMat(3,1,CV_32FC1);
= cvCreateMat(3,1,CV_32FC1);
cvSolve(&A, &b, &x);
// solve (Ax=b) for x
特征值分析(针对对称矩阵):
= cvCreateMat(3,3,CV_32FC1);
= cvCreateMat(3,3,CV_32FC1);
= cvCreateMat(3,1,CV_32FC1);
cvEigenVV(&A, &E, &l);
// l = A的特征值 (降序排列) ,
E = 对应的特征向量 (每行)
奇异值分解SVD:
= cvCreateMat(3,3,CV_32FC1);
= cvCreateMat(3,3,CV_32FC1);
= cvCreateMat(3,3,CV_32FC1);
CvMat* V = cvCreateMat(3,3,CV_32FC1);
cvSVD(A, D, U, V, CV_SVD_U_T|CV_SVD_V_T); // A = U D V^T
标号使得 U 和 V 返回时被转置(若没有转置标号,则有问题不成功!!!).
【OpenCV】矩阵CvMat
opencv矩阵乘法举例
没有更多推荐了,

我要回帖

更多关于 图形计算器汉化版 的文章

 

随机推荐