d1x*_*ord 4 rgb opencv image-processing yuv
我正在尝试使用OpenCV将YUV图像转换为RGB.我是一个完整的新手.我创建了一个函数,它将YUV图像作为源并将其转换为RGB.它是这样的:
void ConvertYUVtoRGBA(const unsigned char *src, unsigned char *dest, int width, int height)
{
cv::Mat myuv(height + height/2, width, CV_8UC1, &src);
cv::Mat mrgb(height, width, CV_8UC4, &dest);
cv::cvtColor(myuv, mrgb, CV_YCrCb2RGB);
return;
}
Run Code Online (Sandbox Code Playgroud)
这有用吗?我是否需要将Mat转换为char*?我很遗憾,任何帮助都将不胜感激.
你的问题中没有足够的细节给出一定的答案,但下面是我最好的猜测.我假设你想要RGBA输出(不是RGB,BGR或BGRA),你的YUV是yuv420sp(因为这是Android相机出来的,它与你的Mat尺寸一致)
void ConvertYUVtoRGBA(const unsigned char *src, unsigned char *dest, int width, int height)
{
//cv::Mat myuv(height + height/2, width, CV_8UC1, &src);
cv::Mat myuv(height + height/2, width, CV_8UC1, src); // pass buffer pointer, not its address
//cv::Mat mrgb(height, width, CV_8UC4, &dest);
cv::Mat mrgb(height, width, CV_8UC4, dest);
//cv::cvtColor(myuv, mrgb, CV_YCrCb2RGB);
cv::cvtColor(myuv, mrgb, CV_YUV2RGBA_NV21); // are you sure you don't want BGRA?
return;
}
Run Code Online (Sandbox Code Playgroud)
我是否需要将Mat转换为char?*
没有Mat mrgb是dest的包装器,并且你安排它的方式,RGBA数据将直接写入dest缓冲区.
归档时间: |
|
查看次数: |
13944 次 |
最近记录: |