How to deal with RGB to YUV conversion

删除回忆录丶 提交于 2019-11-28 06:55:46

You can convert RGB<->YUV in OpenCV with cvtColor using the code CV_YCrCb2RGB for YUV->RGB and CV_RGBYCrCb for RGB->YUV.

void cvCvtColor(const CvArr* src, CvArr* dst, int code) 

Converts an image from one color space to another.

Dolph

Y, U and V are all allowed to be negative when represented by decimals, according to the YUV color plane.

for planar formats OpenCV is not the right tool for the job. Instead you are better off using ffmpeg. for example

static void rgbToYuv(byte* src, byte* dst, int width,int height) {      byte* src_planes[3] = {src,src + width*height, src+ (width*height*3/2)};     int src_stride[3] = {width, width / 2, width / 2};     byte* dest_planes[3] = {dst,NULL,NULL};     int dest_stride[3] = {width*4,0,0};     struct SwsContext *img_convert_ctx = sws_getContext(         width,height,         PIX_FMT_YUV420P,width,height,PIX_FMT_RGB32,SWS_POINT,NULL,NULL,NULL);         sws_scale(img_convert_ctx, src_planes,src_stride,0,height,dest_planes,dest_stride);      sws_freeContext(img_convert_ctx); } 

will convert a YUV420 image to RGB32

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!