中级会员
- 积分
- 448
- 威望
- 226
- 贡献
- 140
- 兑换币
- 149
- 注册时间
- 2018-7-14
- 在线时间
- 41 小时
|
下面的程序是基于山外鹰眼摄像头模块改的图像采集加中线合成,但是合成后的图像中线固定在屏幕左侧,并不能随着图像改变。如下图
求大佬指点一二,谢谢!
void main(void)
{
int y,x,i; //y为行,x为列
//初始化摄像头
camera_init(imgbuff); //这里设定 imgbuff 为采集缓冲区!!!!!!
//配置中断服务函数
set_vector_handler(PORTA_VECTORn ,PORTA_IRQHandler); //设置PORTA的中断服务函数为 PORTA_IRQHandler
set_vector_handler(DMA0_VECTORn ,DMA0_IRQHandler); //设置DMA0的中断服务函数为 DMA0_IRQHandler
while(1)
{
EnableInterrupts;
//获取图像
camera_get_img(); //摄像头获取图像
DisableInterrupts;
/*********** 提供两种方式可供用户自行选择【二值化模式】、【灰度模式】 ************/
/*** 强调一点:所谓的灰度模式,实际上只有2个像素值,即已经二值化好的灰度模式。 ***/
#if 0 //不解压,直接发送二值化图像到上位机。上位机选择【二值化模式】
//发送图像到上位机
vcan_sendimg(imgbuff, CAMERA_SIZE); //发送到上位机
#else //解压,生成只有2个像素值的灰度图像到上位机。上位机选择【灰度模式】
img_extract(img, imgbuff,CAMERA_SIZE); //解压图像
// for (x=0;x<60;x++)
// img[x][40]=1;
for (y=0;y<=59;y++)
{
for (x=39;x>=0;x--)
if (img[y][x]==1)
{
zuoxian=x;
break;
}
for (x=39;x<80;x++)
if(img[y][x]==1)
{
youxian=x;
break;
}
zhongjiandian[y][1]=(youxian+zuoxian)/2;
zhongjiandian[y][2]=(youxian+zuoxian)/2+1;
}
for (i=0;i<=59;i++)
{
img[ zhongjiandian[1]]=1;
img[ zhongjiandian[2]]=1;
}
DELAY_MS(2);
vcan_sendimg(img, CAMERA_W * CAMERA_H); //发送到上位机
#endif
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|