注册会员
- 积分
- 173
- 威望
- 98
- 贡献
- 23
- 兑换币
- 62
- 注册时间
- 2013-7-23
- 在线时间
- 26 小时
- 毕业学校
- 西安邮电大学
|
1贡献
原库在采集完数据后,使用img_buf数组为二值化后的码,然后提取黑线自己写的(有效??)
在LCD显示是一片花屏,求解
程序如下:#include "common.h"#include "include.h"
u8 nrf_buff[CAMERA_SIZE + MAX_ONCE_TX_NUM]; //预多
u8 *img_bin_buff = (u8 *)(((u8 *)&nrf_buff) + COM_LEN); //二值化图像的buf指针,由于开头有 COM_LEN 个字节是留给校验,所以需要加 COM_LEN
u8 img_buf[CAMERA_W *CAMERA_H]; //非压缩的二值化图像(用于识别)
u8 mid_line[CAMERA_W];
void blackline();
//按键调试发送变量的定义
//这些变量都是测试用,有需要,请自行修改
//可以是其他文件定义,不一定是这个文件里定义,然后把
u8 var1, var2;
u16 var3, var4;
u32 var5, var6;
void main(void)
{
Site_t site = {0, 0}; //显示图像左上角位置
Size_t imgsize = {CAMERA_W, CAMERA_H}; //图像大小
Size_t size = {CAMERA_W, CAMERA_H}; //显示区域图像大小
LCD_Init(RED); //初始化,设置背景为白色
Ov7725_Init(img_buf); //摄像头初始化
while(1)
{
ov7725_get_img();
void blackline();
LCD_Img_Binary_Z(site, size, (u16 *)mid_line, imgsize); //显示图像
}
}
void blackline()
{u8 i,j=0,k=0,right_border,left_border,mid_point,mid=0;
for(i=CAMERA_H;i>0;i--)
{for(j=k*CAMERA_W;j<(k+1)*CAMERA_W;j++)
{if((img_buf[j-3]&img_buf[j-2]&img_buf[j-1]==0)&&(img_buf[j]|img_buf[j+1]|img_buf[j+2]==1))//识别黑线左边缘
left_border=j;
else if((img_buf[j-3]|img_buf[j-2]|img_buf[j-1]==1)&&(img_buf[j]&img_buf[j+1]&img_buf[j+2]&img_buf[j+3]==0))//识别黑线右边缘
right_border=j;
mid_point=left_border/2+right_border/2;
mid_line[i-k]=mid_point;
}
k++;
}
}
补充内容 (2013-8-16 14:41):
好吧我发现了一个,j的定义不对。可。。真的没人理/dk |
最佳答案
查看完整内容
粘一段长长的代码问题基本不会有人理的。这个在任何论坛都是。
|