注册会员
- 积分
- 41
- 威望
- 24
- 贡献
- 9
- 兑换币
- 15
- 注册时间
- 2018-1-1
- 在线时间
- 4 小时
|
参与的组别为双车会车。现在想的是做一个简单的两侧黑点对照功能。
left_num=0;
right_num=0; //左右黑点数目清零
for(count_W=30;count_W<40;count_W++)
{
for(count_H=0;count_H<60;count_H++)
{
if (img[count_W][count_H]==0xFF)
{
left_num++;
}
}
} //采集中间左十行的黑点数目
printf("%",left_num);
for(count_W=40;count_W<50;count_W++)
{
for(count_H=0;count_H<60;count_H++)
{
if (img[count_W][count_H]==0x00)
{
right_num++;
}
}
} //采集中间右十行的黑点数目
对数组从中间三十行到四十行开始遍历循环返回的值并不能反映摄像头采集的真实情况(并且大部分计数得到十进制的88)
但如果将数组从零点开始进行遍历循环(计数大致满足摄像头采集到的黑点数目)
串口助手传输回的图像与数据也均符合预期。
同时尝试进入watch 查看img数组内存 发现其为定值0x00或无法查看。
解压函数和储存函数使用均为山外5.3版本
camera_get_img(); //摄像头获取图像
/*********** 提供两种方式可供用户自行选择【二值化模式】、【灰度模式】 ************/
/*** 强调一点:所谓的灰度模式,实际上只有2个像素值,即已经二值化好的灰度模式。 ***/
#if 1 //解压并直接发送二值化图像到上位机。上位机选择【二值化模式】
//发送图像到上位机
img_extract(img, imgbuff,CAMERA_SIZE);
vcan_sendimg(imgbuff, CAMERA_SIZE); //发送到上位机
void img_extract(void *dst, void *src, uint32_t srclen)
{
uint8_t colour[2] = {255, 0}; //0 和 1 分别对应的颜色
uint8_t * mdst = dst;
uint8_t * msrc = src;
//注:山外的摄像头 0 表示 白色,1表示 黑色
uint8_t tmpsrc;
while(srclen --)
{
tmpsrc = *msrc++;
*mdst++ = colour[ (tmpsrc >> 7 ) & 0x01 ];
*mdst++ = colour[ (tmpsrc >> 6 ) & 0x01 ];
*mdst++ = colour[ (tmpsrc >> 5 ) & 0x01 ];
*mdst++ = colour[ (tmpsrc >> 4 ) & 0x01 ];
*mdst++ = colour[ (tmpsrc >> 3 ) & 0x01 ];
*mdst++ = colour[ (tmpsrc >> 2 ) & 0x01 ];
*mdst++ = colour[ (tmpsrc >> 1 ) & 0x01 ];
*mdst++ = colour[ (tmpsrc >> 0 ) & 0x01 ];
}
}
|
|