智能车摄像头组怎么在OLED屏画出中线

首先你要知道二值化这个基本操作,不会的请去看资料。
假设0 在OLED中代表黑色,1在OLED中代表白色。
在这里插入图片描述
首先对摄像头返回的数组进行解压,我这里解压到img[]这个数组,里面的元素要么是1,要么是0.

在这里插入图片描述
通常,为了方便我们进行提取中线操作,会继续用数值0表示黑色,而数值255表示白色,再用一个二维数组image[][]表示。(只是种方法而已,不同的程序对摄像头返回数组的处理方法可能不一样。)
在这里插入图片描述
定义三个数组,一个放左边沿的列值,一个放右边沿列值,一个放中线列值。
这里对小白选手详细解释,以60*80像素为例,顾名思义,60行,80列。
在这里插入图片描述

这是一幅未拟合中线的二值化图片,上面已经说过在image[][]数组中,0代表黑色,255代表白色,那么在上面这幅图片中,我们随便选一行,假设这一行是25行,绿色标识
在这里插入图片描述
那么这一行的信息,在image[25][]中,肯定是000000000…255 255 255 255 255 255 … 00000000这样存储
什么是跳变沿,跳变沿这个概念是数字电路中的,反映在物理背景上,就是你要找的白色赛道的边界,在程序中就是00 255 255这个交界处,这是左边沿,右边沿肯定是 255 255 00 处。不管你的程序用的什么方法提取边沿值,全行扫描法也好,边沿巡线法也好,rightedge[25]中的数值肯定右跳变沿像素所在的列值,假设是65,即代表第65列,leftedge[25]中的数值是左边沿像素所在的列值,假设是15,及代表是第15列。那么第25行中线列值即middleedge[25]=40,即第40列。
这样,每一行都取到中线值。
在这里插入图片描述
然后呢,为了画中线,找到中线像素所在的位置,将这个位置的像素赋值为0,原像素为1,即白色像素更改为黑色像素。
最后,调用OLED画图像函数
在这里插入图片描述
这样就成功了。

总的来讲,流程是提取图像信息,寻找左右边沿线,拟合中线,更改中线所在位置各像素数值,调用画图函数。

请问龙邱的彩色屏咋整,请去仔细学习像素的基本知识,推荐 数字图像处理 这本书。

发布了40 篇原创文章 · 获赞 21 · 访问量 1865

猜你喜欢

转载自blog.csdn.net/qq_42295125/article/details/103090995