what is the YUV?
暗电流来源1、YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多。亮度分量Y 要比色度分量U、V 重要得多。 所以, 可以适当地抛弃部分U、V分量, 达到压缩数据的目的。 YCbCr 是YUV 经过缩放和偏移的改动版,Y 表示亮度,Cr、Cb 表示色彩的色差, 分别是红色和蓝色的分量。
why does transform RGB 2 YUV?
将RGB 转换为 YUV444, 在YUV 色彩空间上进行彩色噪声去除、 边缘增强等。
how to transform RGB 2 YUV?
附一段简单代码:
#include <fstream>
#include <sstream>
#include <iostream>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <vector>
#include <ctime>
#pragma warning( disable : 4244 )
using namespace std;
using namespace cv;
#define WIDTH 4000
#define HEIGHT 3000
int main(int argc, char** argv)
{
Mat imgMat = imread("111111.bmp");
if (imgMat.empty())
return -1;
int cols = imgMat.cols;
int rows = imgMat.rows;
clock_t startTime, endTime;
startTime = clock();
for (int i = 0; i < rows; i++)
{
uchar* data = imgMat.ptr<uchar>(i);
for (int j = 0; j < cols; j++)
{
data[3*j+2] = data[3*j] * 0.5 + data[3*j+1] * 0.4178 + data[3*j+2] * 0.0813;
data[3*j+1] = data[3 * j] * 0.1678 + data[3*j+1] * 0.33113 + data[3*j+2] * 0.5;
data[3*j+0] = data[3 * j] * 0.299 + data[3*j+1] * 0.587 + data[3*j+2] * 0.114;
}
}
endTime = clock();
cout << "consume time = " << double(endTime - startTime) << endl;
resize(imgMat, imgMat, Size(200,200));
imshow("44", imgMat);
waitKey(0);
}