用布雷森汉姆(Bresenham)算法直接在YUV图上绘制图形

Bresenham的线算法以Jack Elton Bresenham命名,他于1962年在IBM开发。是计算机图形学中的经典算法,恰好最近公司项目中需要实现类似的功能,于是就实践了一把,为了以后爬坑方便,记录在此。

图形转YUV

我们是在YUV裸数据上去绘,而通常的图像都是代容器格式的JPG或者PNG等等,所以需要首先将图片转换为YUV裸数据,我们用FFMPEG这款视频处理领域的瑞士军刀完成此功能。

常用的YUV格式有NV12和NV21两种,,NV12 分两个平面,Y 平面和 UV 平面存储,UV 在同一个平面交叉存储,所以也被称为interleaved,NV12格式也叫IOS模式,同FFMPEG 中的YUV420SP,Y和UV分成两个部分分别存储,NV21格式是Android上的常用格式,格式类似于NV12,只是U和V的顺序相反。

用布雷森汉姆(Bresenham)算法直接在YUV图上绘制图形_第1张图片

转换命令:

ffmpeg -i car.jpeg -pix_fmt nv12 car.nv12.yuv

原图:

你可能感兴趣的:(嵌入式系统,Linux,数学,算法,音视频)