python3实现yuv(黑白图像转rgb图像)转jpg图片方法浅谈(代码片段)

小白码农_ 小白码农_     2022-12-28     245

关键词:

最近工作需要需要把YUV的图像转换成rgb的彩色图方便查看。查阅了很多资料基本上都是说的不太清晰,导致像我这样的小白无法准确的定位代码的正确性,只能试来试去的比较浪费时间。说的如果有不对地方的话请私信指正(首次写博客写的不好大家多多体谅)

如果要转换图像格式,首先要了解图像的组成。

yuv图像有很多格式需要知道具体的是那种格和要转换成正确的分辨率(要不然后面转换图像的话yuv图像会没有颜色,即使转换成功也是黑白的图像。分辨率如果不对的话也会导致图像有问题。所以要转之前一定要弄清除这两点)

yuv的图像格式我就不在这里细说了大家自行查阅相关资料,我直接就上代码了

因为yuv的格式比较原始所以这里我用的是python3的cv2的第三方库和numpy这两个库。

这里我就以gray8,NV21,420P作为本次的样例(这里再补充一点就是要知道图像的解码bit数,位数不对的话也会导致图像转换失败或者转换成功的图像有问题)

首先的话就是引入相应的第三方库

 这里大家只需要引入自己需要的包就行了

步骤分为,打开图片->解析图片->像素点重组->生成新的图片。

打开图片的话我用的是

按照指定bit位数解析图片(这里我用的是8bit格式解析的,需求不一样的根据自己的方法解析就行了)

 重点来了,这里我做了一下格式判断,不同格式根据不同的方法进行重组。

size函数是获取像素点数量的

cv2.reshape(())是根据你填写的宽高进行像素点重组成你想要的矩阵格式(也就是像素,例如 640 480这样的,因为不是所有的图像都是按照格式来的。还是一些不规范的比如640 400的,所以需要提前知道分辨率)

cv2.cvtColor()图像 颜色空间转换,根据对应的图片格式进行色彩渲染,cv2.cvtColor这个第三方库都有方法,大家可以自己去看看需要什么样格式的颜色渲染。

cv_format = cv2.COLOR_YUV2BGR_NV21
cv_format = cv2.COLOR_YUV2BGR_I420

以上这两个是我常用的颜色渲染的参数

如果不加颜色渲染的话就是黑白的图像

大概的图像转换就是这样的,简单的说就是打开图片获取图像像素点然后进行宽高的像素点重组得到一张黑白的图像,在进行是否要加颜色就完成了。

本次说的就是以上内容了,有不明白的或者需要代码的请私信我或者发邮件18610625941@163.com,看到我会及时回复

如何把摄像头采集的rgb图像转成yuv格式,并进行h264硬编码?

...我他妈再也不回答了。参考技术A用Opengl即可,写个shader实现rgb->yuv硬编,再用ffmpeg生成mp4,虽然我实现了但不会公布。 查看详情

ffmpeg YUV420 转 RGB24 只转换一行

...-08-1009:53:41【问题描述】:我正在尝试在c++中将我的YUV420p图像转换为RGB24,并在c#中从字节数组创建位图。我的图像大小为1920w*1020h,ffmpeg解码器为我提供了3个平面,用于数据线大小=1920、960、960。但是在sws_scale之后, 查看详情

YUV 转 RGB 和 CreateBitmap ......格式是啥?

...么?【发布时间】:2014-09-0811:56:04【问题描述】:我不是图像格式方面的专家。我正在测试相机的帧速率性能。当我将数据从YUV转换为RGB时,这个数据是哪种RGB格式的?RGB565还是argb8888 查看详情

怎么将图像yuv格式转成rgb格式(c++)

...mmary>        /// 抓取bmp图像         ///         /// BOOL PlayM4_GetBMP(LONG nPort,PBYTE pBitmap,DWORD nBufSize,DWORD* pBmpSize... 查看详情

yuv与rgb

...V分量是可以分离的,如果没有UV分量我们看到的就是一张黑白图片,就像以前的黑白电视机。对于YUV图像来说,并不是每个像素点,都必须包含UV分量,没有UV分量我们只是看不到彩色,所以我们可以合理调整UV分量的采样方式,... 查看详情

ios音视频采集与格式转换(yuv转rgb)

...什么要yuv?有一定历史原因,最早的电视信号,为了兼容黑白电视,采用的就是yuv格式。一张yuv的图像,去掉uv,只保留y,这张图片就是黑白的。 查看详情

matlab实现彩色图像转成灰度图像(代码片段)

 代码:MyYuanLaiPic=imread('C:\\Users\\Administrator\\Desktop\\11.jpg');%读取RGB格式的图像MyFirstGrayPic=rgb2gray(MyYuanLaiPic);%用已有的函数进行RGB到灰度图像的转换[rows,cols,colors]=size(MyYuanLaiPi 查看详情

图像yuv格式介绍

...V)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。  YUV... 查看详情

OpenCV Mat 图像转黑白错误

】OpenCVMat图像转黑白错误【英文标题】:OpenCVMatimagetoblackandwhiteerror【发布时间】:2016-05-0113:35:52【问题描述】:我正在尝试处理目录中的图像,使其成为黑白(灰度),然后将其写入另一个文件。我已经使用OpenCV的C库完成了,... 查看详情

Android ARGB_8888 转 RGB

...01:10:14【问题描述】:我正在使用cameraX来分析来自相机的图像。我得到了YUV_420_888格式的图像,并设法将其转换为ARGB_8888我需要每个像素都在3个字节上,精度为8位,值从0...255这就是我创建位图的方式。valbitmap=Bitmap.createBitmap(imag... 查看详情

python图像视频转字符画

...pyplot库,视频转字符画需要用到opencv库,这里的代码基于python3.5  图像转字符画需要先将图像转为灰度图,转灰度图的公式是 gray=0.2126*r+0.7152*g+0.0722*b,因为matplotlib图像的色彩排序是RGB的(opencv是BGR),所以如果不用库函数... 查看详情

rgb与(rgb转ycbcr再转为rgb)的图像

????RGB与(RGB转YCbCr再转为RGB)的图像?不可逆,能够从矩阵的逆运算看出来。附上matlab代码:????clc,clear;Source=imread(‘1.jpg‘);%读入原始RGB图像figure(1);subplot(1,2,1);imshow(Source):title(‘originalimage‘);%显示图像[rcd]=size(Source);%计算图像大小%- 查看详情

ffmpeg将yuv数据转rgb(代码片段)

...)//分配两个Frame,两段buff,一个转换上下文 //为每帧图像分配内存m_pFrameYUV=av_frame_alloc();m_pFrameRGB=av_frame_alloc();intnumBytes=avpicture_get_size(AV_PIX_FMT_RGB32,nwidth,nheight);m_rgbBuffer=(uint8_t*)av_malloc(numBytes*sizeof(uint8_t));//width和heigt为传入的... 查看详情

视频数据存储方式yuv

...就是黑色最高的亮度就是白色,中间的可呈现出灰色。在黑白电视机向彩色电视机过渡的年代,黑白电视机只需要YUV中的一个分量Y就可以呈现出黑白画面。UV分量用在彩色电视机上即可呈现出彩色了。YUV可以带来更高的帧内压缩... 查看详情

当我将我的 rgb 位图转换为 yuv 时,它会产生红色图像。我想以 YUV 格式从图库中读取图像或将 RGB 位图转换为 YUV

】当我将我的rgb位图转换为yuv时,它会产生红色图像。我想以YUV格式从图库中读取图像或将RGB位图转换为YUV【英文标题】:whenIconvertmyrgbbitmaptoyuvitresultsinaredimage.IwanttoreadimagefromgalleryinYUVformatorconverttheRGBbitmaptoYUV【发布时间】:2015... 查看详情

使用 PIL 将 RGB 图像变成纯黑白图像

】使用PIL将RGB图像变成纯黑白图像【英文标题】:UsingPILtoturnaRGBimageintoapureblackandwhiteimage【发布时间】:2012-03-1909:28:17【问题描述】:我正在使用PythonImagingLibrary进行一些非常简单的图像处理,但是我无法将灰度图像转换为单色... 查看详情

halcon批量将rgb图像转灰度图像

dev_close_window()ImageDir:='E:/客户与项目/精驰技术/hphsinpstect/HPHS.INSPECT/bin/x64/Debug/DeepLearning/ROI-CCD3图像运算/contamination'list_image_files(ImageDir,[],['recursive','follow_lin 查看详情

halcon批量将rgb图像转灰度图像

dev_close_window()ImageDir:='E:/客户与项目/精驰技术/hphsinpstect/HPHS.INSPECT/bin/x64/Debug/DeepLearning/ROI-CCD3图像运算/contamination'list_image_files(ImageDir,[],['recursive','follow_lin 查看详情