注册 登录
查看: 8307|回复: 27

[其他] 【山外LCD】画中线的方法(附一份简单的中线代码)

[复制链接]
发表于 2015-3-30 13:46:57 | 显示全部楼层 |阅读模式
很多同学已经提取了中线出来,但苦于不知道如何把中线画在LCD上,这里我提供一下方法:

  1. /*!
  2. *  @brief      画一堆点
  3. *  @param      site        点坐标数组
  4. *  @param      point_num   点的数量
  5. *  @param      rgb565      颜色
  6. *  @since      v5.0
  7. *  Sample usage:        Site_t site[3] = {{10,20},{11,21},{12,22}};   //3个点,坐标分别是  {10,20},{11,21},{12,22}
  8.                         LCD_points(site,3, RED);
  9. */
  10. void LCD_points          (Site_t *site,uint32 point_num, uint16 rgb565)                 //画一堆点
  11. {
  12.     while(point_num--)
  13.     {
  14.         LCD_point(site[point_num],rgb565);                 //画点
  15.     }
  16. }



调用这函数把点画上去,一定要注意LCD显示图像的坐标是要{0,0};而且不能全屏显示。【调用的方法可看这函数的注释】

如果摄像头采集的图像是全屏显示,那样就会出现和中线的点不对应的情况,即此楼主贴的情况:
中线提取算法 - 智能车讨论区 - http://vcan123.com/forum.php?mod=viewthread&tid=8700


我们的例程,默认是全屏显示:
  1.     Site_t site     = {0, 0};                           //显示图像左上角位置
  2.     Size_t imgsize  = {CAMERA_W,CAMERA_H};             //图像大小
  3.     Size_t size;                   //显示区域图像大小

  4.     size.H = LCD_H;
  5.     size.W = LCD_W;

  6.     LCD_Img_Binary_Z(site, size, imgbuff, imgsize);


只需要修改如下代码即可改成原始大小显示:
  1.     size.H = CAMERA_H;          //显示区域改成是和摄像头分辨率一样
  2.     size.W = CAMERA_W;


或者选择用LCD_Img_Binary函数。

===================================================
关于中线提取的方法,可参考如下帖子:

中线提取算法 - 智能车讨论区 - http://vcan123.com/forum.php?mod=viewthread&tid=8700

摄像头组循迹问题 - 智能车讨论区 - http://www.vcan123.com/forum.php?mod=viewthread&tid=8384

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2015-3-30 15:18:54 | 显示全部楼层
虽然还没弄好,先谢谢山外哥了
回复 支持 反对

使用道具 举报

发表于 2015-4-1 20:30:08 | 显示全部楼层
其实我们想要的是可以全屏显示的  画中线的方法,我按照你的缩放方法来进行全屏中线画点,可是还是没有达到想要的效果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-1 20:33:54 | 显示全部楼层
a5205072 发表于 2015-4-1 20:30
其实我们想要的是可以全屏显示的  画中线的方法,我按照你的缩放方法来进行全屏中线画点,可是还是没有达到 ...

全屏显示画中线,这个需要计算缩放比例,然后缩放到屏幕上。

你自己实现就好,初中数学的内容。
回复 支持 反对

使用道具 举报

发表于 2015-4-2 22:18:23 | 显示全部楼层
有谁知道这些电阻什么意思吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-5-8 20:59:13 | 显示全部楼层
青青子衿 发表于 2015-4-2 22:18
有谁知道这些电阻什么意思吗?

只焊接那两个电阻不就是下拉了么,
回复 支持 反对

使用道具 举报

发表于 2015-5-17 12:09:48 | 显示全部楼层
山外哥,我的KL26+鹰眼 采集图像有点问题,但是不能发帖,希望山外哥解救
回复 支持 反对

使用道具 举报

发表于 2015-5-18 19:37:18 | 显示全部楼层
我已经提取到了中线位置Line_Mx[i],Line_My[i] 它是两个一维数组,怎样将这个位置发送到上位机?用vcan_sending()函数行么?
回复 支持 反对

使用道具 举报

发表于 2015-6-10 20:59:31 | 显示全部楼层
山外メ雲ジ 发表于 2015-4-1 20:33
全屏显示画中线,这个需要计算缩放比例,然后缩放到屏幕上。

你自己实现就好,初中数学的内容。

山外哥,LCD_points这个函数怎么调用???
回复 支持 反对

使用道具 举报

发表于 2015-6-18 12:10:36 | 显示全部楼层
请问怎样画中线蓝牙发送在多功能调试助手的上面显示急求!!!

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-18 13:12:22 | 显示全部楼层
111xian 发表于 2015-6-18 12:10
请问怎样画中线,蓝牙发送在多功能调试助手的上面显示,急求!!!

画在图片上,然后发送出去
回复 支持 反对

使用道具 举报

发表于 2016-1-3 23:12:32 | 显示全部楼层
一日,晌午,宋江途经东京卞梁县,正当处暑,热气难熬,街上已寥无几人,只听见远处有议论声纷纷传来,一看,不是哪里,正是悦来客栈,宋江走进客栈,找了位置坐下,解下佩刀,帽子往桌上一放,只听众人纷纷议论,宋江便叫住小二,“请问,众人皆议论甚?”小二答道:“客官外地人吧?”,宋江嗯道,“你有所不知,在这卞梁县东街尽头,有一铁匠铺,据说里面的工匠是三国刘氏后裔,练得一身打铁技术,据说能打造世上神器,高太尉闻此人神术,便遣人请他为自己打造一把佩刀,谁知那铁匠居然不从,还推脱说打不出,高太尉得知,火冒三丈,看来此人命不久矣,客官,便是此事。”宋江曰:“敢问此人大名?”小二曰:“小的只知此人姓刘,手拿一把红色兵器,至于是甚,小的就不知道了。”话刚落,宋江起身,放下茶钱,提起佩刀,戴上帽子便走,“客官慢走。”出了客栈的宋江直奔东街,到了铁匠铺,宋江直进入内,只见此人虎背熊腰,背后刺有大虫!高六丈,“此处可造佩刀?”宋江问道,“造佩刀何用?”铁匠问道,“替天行道”宋江低声回答,此人转身一看,说到:“你可是宋江宋大哥?”宋江心想,此人为何识我?说道:“在下便是,敢问英雄大名?”只见铁匠跪了下来,“小弟日夜盼望,有生之年能见你一面,都说你忠义一身,满腔热血,今日得偿所愿,死而无憾!”“英雄请起,在下不敢当。”宋江说着便扶起铁匠,“我听众人议论,你得罪高太尉,此人心狠手辣,英雄恐怕会遭罪,若不介意,随我上梁山一起替天行道?”“我早有此意,今日哥哥相邀,我便随哥哥上山!”宋江又问:“敢问英雄大名?”铁匠说道:“小弟乃三国刘氏后裔,因时事变化,从祖上两代开始变靠打铁为生,小弟姓刘名明,因手持一把大的稀罕火钳,故世人唤我做——— 火 钳 刘 明!
回复 支持 反对

使用道具 举报

发表于 2016-1-6 11:50:45 | 显示全部楼层
本帖最后由 heyunfu01 于 2016-1-6 11:52 编辑

山外哥,请问假如我的中线存在Center[CAMERA_H]数组里,我要调用画点函数将我的中线显示出来,那么画点函数的那个site该怎么写?怎么让LCD动态显示我的中线?也就是如何更新site数组?困扰很长时间,望解答!!!谢谢山外哥!!
我用以下方法,我把site用site_Center表示,这样是错误的,求正确的方法:
    uint8 i;
    for(i=0;i<60;i++)
    {
      site_Center={center,i};
    }
下面的也不行!
/*site_Center[60]={   {center[60],60},{center[59],59},{center[58],58},{center[57],57},{center[56],56},{center[55],55},{center[54],54},{center[53],53},{center[52],52},{center[51],51},
                        {center[50],50},{center[49],49},{center[48],48},{center[47],47},{center[46],46},{center[45],45},{center[44],44},{center[43],43},{center[42],42},{center[41],41},
                        {center[40],40},{center[39],39},{center[38],38},{center[37],37},{center[36],36},{center[35],35},{center[34],34},{center[33],33},{center[32],32},{center[31],31},
                        {center[30],30},{center[29],29},{center[28],28},{center[27],27},{center[26],26},{center[25],25},{center[24],24},{center[23],23},{center[22],22},{center[21],21},
                        {center[20],20},{center[19],19},{center[18],18},{center[17],17},{center[16],16},{center[15],15},{center[14],14},{center[13],13},{center[12],12},{center[11],11},
                        {center[10],10},{center[9],9},{center[8],8},{center[7],7},{center[6],6},{center[5],5},{center[4],4},{center[3],3},{center[2],2},{center[1],1}
                     };*/

回复 支持 反对

使用道具 举报

发表于 2016-1-6 11:51:48 | 显示全部楼层
heyunfu01 发表于 2016-1-6 11:50
山外哥,请问假如我的中线存在Center[CAMERA_H]数组里,我要调用画点函数将我的中线显示出来,那么画点函数 ...

/*site_Center[60]={   {center[60],60},{center[59],59},{center[58],58},{center[57],57},{center[56],56},{center[55],55},{center[54],54},{center[53],53},{center[52],52},{center[51],51},
                        {center[50],50},{center[49],49},{center[48],48},{center[47],47},{center[46],46},{center[45],45},{center[44],44},{center[43],43},{center[42],42},{center[41],41},
                        {center[40],40},{center[39],39},{center[38],38},{center[37],37},{center[36],36},{center[35],35},{center[34],34},{center[33],33},{center[32],32},{center[31],31},
                        {center[30],30},{center[29],29},{center[28],28},{center[27],27},{center[26],26},{center[25],25},{center[24],24},{center[23],23},{center[22],22},{center[21],21},
                        {center[20],20},{center[19],19},{center[18],18},{center[17],17},{center[16],16},{center[15],15},{center[14],14},{center[13],13},{center[12],12},{center[11],11},
                        {center[10],10},{center[9],9},{center[8],8},{center[7],7},{center[6],6},{center[5],5},{center[4],4},{center[3],3},{center[2],2},{center[1],1}
                     };*/

我用这个样子也不行,求解!!!

回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-6 11:52:00 | 显示全部楼层
heyunfu01 发表于 2016-1-6 11:50
山外哥,请问假如我的中线存在Center[CAMERA_H]数组里,我要调用画点函数将我的中线显示出来,那么画点函数 ...

就是结构体数组而已,结构体赋值懂吧?然后for循环扫描数组即可
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-6 11:52:33 | 显示全部楼层
heyunfu01 发表于 2016-1-6 11:51
/*site_Center[60]={   {center[60],60},{center[59],59},{center[58],58},{center[57],57},{center[56], ...

你需要for循环,一个个赋值
回复 支持 反对

使用道具 举报

发表于 2016-1-6 11:57:33 | 显示全部楼层
山外メ雲ジ 发表于 2016-1-6 11:52
你需要for循环,一个个赋值

    uint8 i;
    for(i=0;i<60;i++)
    {
      Site_t.site_Center={center,i};
    }

谢谢山外哥,能进一步指点吗?怎么用for赋值?上面的语句怎么改呢?

回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-6 12:01:00 | 显示全部楼层
heyunfu01 发表于 2016-1-6 11:57
uint8 i;
    for(i=0;i

不能明说,已经提示得很清楚了,基础的内容,需要自己搜索,看看书来解决,否则就失去学习的意义了,成为了伸手党。
就for循环扫描数组,然后一个个结构体元素赋值。
回复 支持 反对

使用道具 举报

发表于 2016-1-6 12:02:46 | 显示全部楼层
山外メ雲ジ 发表于 2016-1-6 12:01
不能明说,已经提示得很清楚了,基础的内容,需要自己搜索,看看书来解决,否则就失去学习的意义了,成为 ...

好的,我查查资料,谢谢山外哥了!
回复 支持 反对

使用道具 举报

发表于 2016-2-29 14:30:43 | 显示全部楼层
我的中线会留在lcd上,虽然下一张的也会显示可是过去的中线没被擦除,导致线会堆积成一片,求指教一下?

Site_t center[120];
            
                for(i=0;i<120;i++)
                {
                  center[i].x=middle[i];
                  center[i].y=i;
                }
             LCD_points          (center,120, RED);  
回复 支持 反对

使用道具 举报

发表于 2016-3-3 22:21:33 | 显示全部楼层
山外哥,用这个办法需要改底层吗?
回复 支持 反对

使用道具 举报

发表于 2016-3-4 11:18:15 | 显示全部楼层
奇怪的S 发表于 2016-2-29 14:30
我的中线会留在lcd上,虽然下一张的也会显示可是过去的中线没被擦除,导致线会堆积成一片,求指教一下?

...

解决了没
回复 支持 反对

使用道具 举报

发表于 2016-3-15 20:36:39 | 显示全部楼层
one30 发表于 2015-6-10 20:59
山外哥,LCD_points这个函数怎么调用???

同问,这个怎么调用,kl26库里面没有
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

发表于 2016-3-20 00:58:12 | 显示全部楼层

目前我是在循环中用白色点覆盖原来的红色点····就这样
回复 支持 反对

使用道具 举报

发表于 2016-3-28 15:06:57 | 显示全部楼层
奇怪的S 发表于 2016-2-29 14:30
我的中线会留在lcd上,虽然下一张的也会显示可是过去的中线没被擦除,导致线会堆积成一片,求指教一下?

...

能加个QQ吗,我这里遇到了问题,谢谢
回复 支持 反对

使用道具 举报

发表于 2016-4-10 16:03:30 | 显示全部楼层
752002766~
回复 支持 反对

使用道具 举报

发表于 2017-2-18 18:51:17 | 显示全部楼层
学习学习再学习
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
问一下山外哥,怎么在上位机上显示这个黑线呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部