添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品, 尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

摄像头 图像 处理YUV RGB 效率分析

YUV RGB 的代码优化问题2.1 浮点转换2.2 浮点 整形2.3 浮点运算和整数运算在PC上模拟的效果3. x1000上进行对比测试3.1 使用软浮点测试一帧 图像 转换时间3.2 开启FPU后转换 图像 ...总结 1.文章简述 摄像输出的 图像 一般都是YUV格式的 图像 ,本文主要从摄像头输出的YUV格式 图像 的角度出发,对 图像 格式的转换进行设计。同时对代码的优化进行总结与整理。下面来详细讲述这些问题。 2....YUV RGB 的代码优化问题 从原理上来说,对于一个YUV RGB 的代码,可以从浮点和浮点 整形这两种方式进行转换,而转成整数后又可以利用MXU进行计算,应该可以加快运算速度。...转换一帧 图像 需要的时间是137ms 浮点 整形运算时间 经过转换只需要9ms。也就是说,将浮点转换成整形后,效率提高了15倍。...可见转换一帧 图像 后运算时间为12ms。 浮点 整形运算时间 浮点 整形后速度还是要快一些。

1.7K 1 0

面试官:请使用 OpenGL ES 将 RGB 图像 换为 YUV 格式。我 ……

最近,有位读者大人在后台反馈:在参加一场面试的时候,面试官要求他用 shader 实现 图像 格式 RGB YUV ,他听了之后一脸懵,然后悻悻地对面试官说,他只用 shader 做过 YUV RGB ...OpenGL 实现 RGB YUV 好处 使用 shader 实现 RGB 到 YUV 的 图像 格式转换有什么使用场景呢?在生产环境中使用极为普遍。...glReadPixels 大家经常用来读取 RGBA 格式的 图像 ,那么我用它来读取 YUV 格式的 图像 行不行呢? 答案是肯定的,这就要用到 shader 来实现 RGB 到 YUV 的 图像 格式转换。...YUV RGB 这一节先做个铺垫简单介绍下 YUV RGB 实现,在前面的文章中曾经介绍过 OpenGL 实现 YUV 的渲染,实际上就是利用 shader 实现了 YUV(NV21) 到 RGBA ...shader 实现 RGB YUV 原理图 我们要将 RGBA 转成 YUYV,数据量相比于 RGBA 少了一半,这就相当于将两个像素点合并成一个像素点。

5K 4 1

使用 OpenGL 实现 RGB 到 YUV 的 图像 格式转换

RGB ,不知道 RGB YUV 是个什么思路。...glReadPixels 大家经常用来读取 RGBA 格式的 图像 ,那么我用它来读取 YUV 格式的 图像 行不行呢?答案是肯定的,这就要用到 shader 来实现 RGB 到 YUV 的 图像 格式转换。...YUV RGB 这一节先做个铺垫简单介绍下 YUV RGB 实现,在前面的文章中曾经介绍过 OpenGL 实现 YUV 的渲染,实际上就是利用 shader 实现了 YUV(NV21) 到 RGBA ...原理图: [shader 实现 RGB YUV 原理图] 我们要将 RGBA 转成 YUYV,数据量相比于 RGBA 少了一半,这就相当于将两个像素点合并成一个像素点。...8 个字节表示的 2 个 RGBA 像素就转 换为 4 个字节表示的 2 个 YUYV 像素。

7K 5 1

NV21、NV12、YV12、 RGB 、YUV、 RGBA 、RGBX8888等 图像 色彩编码格式区别

​常用 图像 颜色编码格式NV21、NV12、YV12、 RGB 、YUV、 RGBA 、RGBX8888都是常见的 图像 颜色编码格式,它们之间的主要区别在于色彩空间和数据排列方式。... RGB RGB 是一种常见的颜色编码格式,它采用红、绿、蓝三种颜色组成 图像 RGB 的R、G、B三个分量分别表示红色、绿色和蓝色的强度。... RGB 图像 中的每个像素都需要三个值来表示颜色,因此它的数据排列方式是按照红、绿、蓝的顺序排列。... RGBA RGBA 是一种常见的颜色编码格式,与 RGB 类似,但它额外包含了一个Alpha通道,用于表示像素的透明度。 RGBA 的R、G、B三个分量分别表示红色、绿色和蓝色的强度,A表示透明度。...0层的话传0 * * @param rgb _plane: rgb 888 图像 数据 * * @param offset: 图像 偏移, 这个主要目的是用来做clip的,一般传0 * * @param row_stride

1.4K 0 0

minigui:增加__mg_save_jpg保存JPEG格式 图像

JPEG压缩的流程都是固定的,网上有很多代码,JPEG自己也有例子,这不难,复杂的地方是将一个MYBITMAP对象的 图像 数据转成JPEG压缩所需要的 RGB color space(色彩空间)。...minigui支持 RGB ,BRG, RGBA , RGB 565,index 16 index 256,几种color space, RGB 最简单,不需要 ,其他几种color space都需要分别进行转换。...转 换为 RGB static BYTE* MYBITMAP_get_pixel_row_ RGB 565(unsigned int next_scanline,...to RGB ,直接 返回 MYBITMAP的 图像 数据地址 static BYTE* MYBITMAP_get_pixel_row_ RGB (unsigned int next_scanline,...0xFFFFFF #endif // RGBA to RGB 时会将alpha通道值与R,G,B合并计算出新的 RGB 值 static BYTE* MYBITMAP_get_pixel_row_ RGBA

528 3 0

一文弄明白 OpenCV Mat 中通道channels的作用

通常 返回 结果值为:1,2,3,4 这四个结果。 那么这个通道是什么东西呢? 我们知道,所有的 图像 都是由一个个像素点堆积而成的。而一个像素点,又是由 RGB 颜色混合而成的。 每一种颜色就是一种通道。...等彩色 图像 换为 GRAY灰色的时候,Mat的通道数就会被压制为单通道G了。...主要是 RGB 555和 RGB 565格式的 图像 ,这个通道通常用来计算。 三通道的,图片就是彩色 图像 了,例如 RGB ,BGR,HSV,HLS等等。 四通道的,图片带透明度的 图像 了。...其实说破很简单: ImgProc.COLOR_BGR2BGRA;// BGR to BGRA 也就是BGR格式 BGRA格式 ImgProc.COLOR_ RGB 2 RGBA ;// RGB to RGBA ...也就是 RGB 格式 RGBA 格式 ImgProc.COLOR_BGRA2BGR;// BGRA to BGR 格式 ImgProc.COLOR_ RGBA 2BGR;// RGBA to BGR 格式 ImgProc.COLOR_BGRA2GRAY

636 3 0

OpenGL 使用 Shader 实现 RGBA I420(附项目源码)

前面连续写过两篇 shader 实现 RGBA YUV 的文章: OpenGL 使用 shader 实现 RGBA YUYV OpenGL 使用 shader 实现 RGBA NV21...一文掌握 YUV 图像 的基本处理 YUV 图像 格式详解 Shader 实现 RGBA I420 I420 格式的 图像 在视频解码中比较常见,像前面文章中提到的,在工程中一般会选择使用 Shader 将... RGBA YUV,这样再使用 glReadPixels 读取 图像 时可以有效降低传输数据量,提升性能,并且兼容性好。...所以,在读取 OpenGL 渲染结果时,先利用 Shader 将 RGBA YUV 然后再进行读取,这种方式非常高效便捷。..., pBuffer); 上节我们详细讨论了 Shader 实现 RGBA I420 原理,下面将直接贴出几处关键的实现代码。

854 4 0

OpenGL 使用 Shader 实现 RGBA I420(附项目源码)

前面连续写过两篇 shader 实现 RGBA YUV 的文章: OpenGL 使用 shader 实现 RGBA YUYV OpenGL 使用 shader 实现 RGBA NV21 关于...一文掌握 YUV 图像 的基本处理 Shader 实现 RGBA I420 I420 格式的 图像 在视频解码中比较常见,像前面文章中提到的,在工程中一般会选择使用 Shader 将 RGBA YUV...所以,在读取 OpenGL 渲染结果时,先利用 Shader 将 RGBA YUV 然后再进行读取,这种方式非常高效便捷。...[ RGBA 2Y.png] 由于视口宽度设置为原来的 1/4 ,可以简单的认为(实际上比较复杂)相对于原来的 图像 每隔 4 个像素做一次采样,由于我们生成 Y plane 的 图像 需要对每一个像素都进行采样,..."); delete []pBuffer; glBindFramebuffer(GL_FRAMEBUFFER, 0); 思考题:利用 shader 实现 RGBA I420 的效率为什么没有

1.1K 2 0

OpenGL: 如何利用 Shader 实现 RGBA 到 NV21 图像 格式转换?(全网首次开源)

之前写过一篇 OpenGL 使用 shader 实现 RGBA YUYV 的文章,有几位读者大人在后台建议写一篇 shader 实现 RGBA NV21 的文章,因为在实践中 NV21 格式用的比较多...一文掌握 YUV 图像 的基本处理 10bit YUV(P010)的存储结构和处理 Shader 实现 RGBA NV21 好处 OpenGL 完成 图像 的渲染后,很多情况下需要将渲染后的 图像 读取到内存进行下一步处理...在不涉及超大 图像 读取时,我们一般会选择使用 Shader 将 RGBA YUV,这样再使用 glReadPixels 读取 图像 时可以有效降低传输数据量,提升性能。...Shader 实现 RGBA NV21 原理 对 NV21 格式比较熟悉的同学应该非常了解,NV21 有两个平面(plane), 一个 plane 存储 Y 分量,另一个 plane 存储依次交错排列的..., pBuffer); 上节我们详细讨论了 Shader 实现 RGBA NV21 原理,下面将直接贴出几处关键的实现代码。

2.2K 5 1

FFmpeg 播放器视频渲染优化

视频渲染优化 前文中,我们都是将解码的视频帧通过 swscale 库转 换为 RGBA 格式,然后在送给 OpenGL 渲染,而视频帧通常的格式是 YUV420P/YUV420SP ,所以大部分情况下都需要...YUV RGB 本文视频渲染优化,实质上是对 OpenGLRender 视频渲染器进行改进,使其支持 YUV420P 、 NV21 以及 NV12 这些常用格式 图像 的渲染。...我们在前文一文掌握 YUV 的 图像 的基本处理中知道,YUV420P 格式的 图像 在内存中有 3 个平面,YUV420SP (NV21、NV12)格式的 图像 在内存中有 2 个平面,而 RGBA 格式的 图像 只有一个平面...格式的 图像 需要用到 3 个纹理,渲染 YUV420SP 格式的 图像 只需用到 2 个纹理即可,而渲染 RGBA 格式 图像 只需一个纹理。...frame->linesize[0]; image.ppPlane[0] = frame->data[0]; } else { //其他格式由 swscale 转 换为

3.2K 3 0

【译】使用“不安全“的Python加速100倍代码运行速度

像是我们在步幅中有 4 而不是 3 的部分,对于 RGB 图像 我可以理解。当我们将 SRCALPHA 传递给 Surface 构造函数时,我们确实要求一个带有 alpha 通道的 RGBA 图像 。...(与将 RGB 换为 灰度不同,后者会在意。)如果您给出 BGR 数据并谎称它是 RGB ,则代码将产生与给出实际 RGB 数据时相同的结果。...同样地,如果我们将这个数据重新解释为一个具有 numpy 的默认步幅的 (height, width) 数组,我们将隐式地对 图像 进行 置。但是调整大小并不在乎!...下面的一段代码接收一个 Pygame surface并 返回 底层 RGBA 或 BGRA 数组的基础指针,以及一个指示它是 BGR 还是 RGB 的标志 import ctypes def arr_params... rgba _buffer 也是不安全的——尽管我们 返回 一个 numpy 数组,一个“安全”的对象,但在数据被释放后,你仍然可以使用它,例如。

123 1 0

Android UVC Camera获取的yuv Mat

转换yuv byte Bitmap 笨办法可以先将yuv Bitmap,然后再使用OpenCV提供的Utils.btimapToMat转换成Mat。 但是很明显,中间的转换过程可以进行优化。...只需要将该bmp转 换为 Mat就可以了。... 图像 数据比值关系是4:2:0 所以,我们如果想将相机得到的yuv数据,转 换为 Mat只需要写为: Mat yuv_mat = new Mat(480 + (480 / 2), 640, CvType.CV...很简单,通过我们后面 Imgproc.cvtColor(yuv_mat, rgb _mat, Imgproc.COLOR_YUV420sp2 RGB ); 方法中的 Imgproc.COLOR_YUV420sp2 RGB ...上面这个代码的作用是,将yuv_mat中的数据采用YUV420sp格式转 换为 RGB 格式,并赋值给 rgb _mat。

560 2 0

Python Pillow(PIL)库的用法介绍

mode, 图片的模式,如“ RGB ”(red,green,blue三原色的缩写,真彩 图像 )、“L”(灰度,黑白 图像 )等。 size, 图片的尺寸。...convert(self, mode=None, matrix=None, dither=None, palette=WEB, colors=256): 将图片转 换为 指定的模式,并且 返回 转换后的图片副本...将彩色 图像 换为 灰度('L')时,使用ITU-R 601-2进行亮度转换:L = R * 299/1000 + G * 587/1000 + B * 114/1000 。...matrix只支持从少数模式转换成'L'或' RGB '。 dither, 高频振动,用于控制颜色抖动。从模式' RGB '转 换为 'P'或从' RGB '或'L'转 换为 '1'时使用。...传入一张与被粘贴图片尺寸一样的图片,可以使用模式为'1'、'L'或者' RGBA '的 图像

1.8K 3 0

GPUImage详细解析(十二)Sobel边界检测

首先是把输入的 图像 变成亮度图,再由边界检测的滤镜转换成边界图。...绘制的流程: 1、摄像机采集 图像 ,得到YUV颜色空间的 图像 ; 2、把YUV的 图像 分成亮度纹理和色度纹理,并用YUV到 RGBA 换矩阵,把两个纹理合成 RGBA 图像 ; 3、根据 RGB 不同的权值,把 RGB ...颜色空间的 图像 ,转 换为 亮度图; 4、对每一个像素,根据八方向的像素值,用水平卷积矩阵算出水平方向的差异值h;用垂直卷积矩阵算出垂直方向的差异值v;根据sqrt(h2+v2)求出明亮程度,得到边界图; 5...本身摄像头得到的YUV颜色空间里面就包括了亮度图,但是在本文的demo中却是经历了YUV到 RGBA 的转换,再由 RGBA 到亮度图的转换,这里是一个可优化的地方。 代码不复杂,见github。

1.2K 5 0

OpenCV4Android中NDK开发(二)---图片转为灰度图

自已写一个将OpenCV的Mat转为Bitmap的方法mat2bitmap //将Mat转 换为 bitmap jobject mat2bitmap(JNIEnv *env, cv::Mat &src,...判断 图像 类型是否符合 获取 图像 像素值 将 图像 转为Mat类型 通过OpenCV的函数转为灰度图 将转完后的Mat再转换回Bitmap的 图像 并输出 ?...,如果 返回 值小于0就是执行失败 if ((ret = AndroidBitmap_getInfo(env, bmp, &bitmapInfo)) < 0) { LOGI("AndroidBitmap_getInfo...error-%d", ret); return NULL; //判断 图像 类型是不是 RGBA _8888类型 if (bitmapInfo.format !..., CV_8UC4, pixelscolor); //将 图像 转为灰度图 cv::cvtColor(src, src, cv::COLOR_ RGBA 2GRAY); //获取原图片的参数

1.4K 2 0