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的顺序相反。

转换命令:

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

原图:

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

  1. 【附源码】布雷森汉姆直线算法(bresenham‘s line algorithm)

    1.布雷森汉姆直线算法简介 我们在纸上画直线时,只需要定一个起点和终点,然后把两点连接起来就是一条直线,你将会得到一条笔直的直线. 但是,这个简单的过程,在计算机上却并不容易.首先计算机的屏幕是一个一 ...

  2. Python布雷森汉姆直线算法RViz可视化ROS激光占位网格映射

    使用对数赔率映射已知姿势算法(ROS 包). 布雷森汉姆直线算法 布雷森汉姆直线算法是一种线绘制算法,它确定应选择的 n 维栅格的点,以便形成两点之间的直线的近似值. 它通常用于在位图图像中(例如在计 ...

  3. Bresenham‘s line algorithm 布雷森汉姆直线算法

    1.线性方程 首先我们假设要绘画的直线斜率大于0小于1. 截距式直线方程如下: y=f(x)=mx+by=f(x)=mx+by=f(x)=mx+b 现在我们要从点(x0,y0)(x_0,y_0)(x0 ...

  4. 易懂的Bresenham 布雷森汉姆算法画圆的原理与Python编程实现教程

    Bresenham 布雷森汉姆算法画圆的原理与编程实现教程 注意:Bresenham的圆算法只是中点画圆算法的优化版本.区别在于Bresenham的算法只使用整数算术,而中点画圆法仍需要浮点数.注意: ...

  5. 布雷森汉姆直线演算法(Bresenham‘s line algorithm)介绍

    布雷森汉姆直线演算法(Bresenham's line algorithm)是用来描述两点间决定一条直线的算法,本人发现它可以用于确定栅格地图中两点间直线经过的栅格位置,它会算出一条线段在点阵图上最接 ...

  6. 在yuv上画线_利用布雷森汉姆算法绘制在YUV图像上画直线

    最近,因工作需要,在YUV图像上画直线: 算法1步骤: 1.已知直线的起点和终点: 2. 利用布雷森汉姆算法在两点间画直线: 3. 将该直线上的点的颜色在YUV图像上画出. 布雷森汉姆算法原理参考wi ...

  7. 用C语言代码实现布雷森汉姆直线插补

    布雷森汉姆直线插补是计算机图形学中常见的直线插补算法.以下是用C语言实现布雷森汉姆直线插补的代码示例: #include <stdio.h> #include <math.h> ...

  8. ITK:布雷森汉姆线BresenhamLine

    ITK:布雷森汉姆线BresenhamLine 内容提要 输出结果 C++实现代码 内容提要 在两点之间的布雷森纳姆线上获得点. 输出结果 [0, 0] [1, 1] [2, 2] [3, 3] [0 ...

  9. 森汉姆算法(AS3)-检测两点之间所经过的节点

    为了把A*寻到的路径中一些没必要的节点去掉,可以用到森汉姆算法,如果两点之间经过的节点都是可走的,那就把这两个点连起来,最终拿到的路径就是比较平滑的了. 下面是算法实现: ? public stati ...

最新文章

  1. 20135231 —— 第六周任务总结报告
  2. C++primer第九章 顺序容器 9.3 顺序容器操作
  3. IOS scrollView 知识点
  4. emlog程序音乐歌曲网源码
  5. Cadence Virtuoso IC617的启动和新建工程
  6. 【142】阿蛮歌霸使用技巧
  7. 把PDF/AZW/EPUB转成图片
  8. java前后端分离跨域解决方案
  9. Japanese Student Championship 2019 Qualification B - Kleene Inversion(规律 + 快速乘)
  10. eslint 规则之 《Missing radix parameter》
  11. ps 索引模式 导出变成了白色背景
  12. 胡适致毕业生:功不唐捐
  13. java代码控制电脑发出警报_java – 如何使用警报构建器对话框显示消息
  14. 【3.3 ads篇(重点)】
  15. 正圆锥体空间方程_电路原理中三相缺相保护器是如何工作的,正负序与它有什么关系...
  16. ThinkPHP模版引擎之变量输出详解
  17. 一篇文章弄懂变压器的等效原理
  18. 悟空(wukong)搜索引擎源代码阅读(待续)
  19. 你离互联网大公司的距离只有三个月:算法小白的面试成长之旅之路线图
  20. 【Windows】应用程序池“*******”将被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误

热门文章

  1. ADB WIFI 使用方法(三步超简单,实测可行,整理分享)
  2. python 基于情感词典的情感分析之乐,惧,惊,哀,恶,怒和未知七种情感分析
  3. 创建(导入)PCB封装库
  4. TongWeb8数据源相关问题
  5. PHP中实现1到100的素数
  6. 移动营销实务十讲导读(图文版)
  7. java遍历map集合传值,不同方式遍历Map集合(全)
  8. 线性调频LFM脉冲压缩 连续波雷达仿真线性调频信号仿真分析压缩
  9. 调制解调器(Modem) 是在模拟信号和数字信号之间转换用的
  10. 北信源董事长林皓:99%的网络威胁来自终端,“人”是关键节点