需求简介:
由于最近在做图像处理的项目,有时候需要快速的知道图像的最大像素值和最小像素值是多少,或者图像的最大最小像素的坐标在哪里。需要快速的得到RGB图像中的R、G、B当中的某个通道。需要把RGB图像转成YUV数据存储。需要把YUV数据转成RGB图片保存。当每次需要用到这些功能是,都得单独写代买去转换,非常麻烦而且浪费时间。所以自己写了这个小工具。
主要用到的函数:
1、两图像相减:cvSub()
2、两图像相与:cvAnd()
3、两图像相或:cvOr()
4、两图像亦或:cvXor()
5、求图像的最大小值和最大最小值的坐标:cvMinMaxLoc()
6、RGB转YUV422:rgb2Yuv422Packed()
/*******************************
yuv422Packed format 数据排列:
Y0U0Y1V1Y2U2Y3V3.....
................
*******************************/
void MainWindow::rgb2Yuv422Packed(const unsigned char *rgbData, int width, int height, int widthstep, unsigned char *yuvData)
{
int index = 0;
for (int y = 0; y < height;