OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7008|回复: 11

求!!!探索板OV2640黑白二值化图像处理的例程,十万火急!

[复制链接]

4

主题

15

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2017-2-20
在线时间
8 小时
发表于 2017-2-22 22:47:35 | 显示全部楼层 |阅读模式
10金钱
有的大哥麻烦发一份给小弟参考参考

小弟感激不尽

好人一生平安

最佳答案

查看完整内容[请看2#楼]

把这一段函数改成这个就可以了,这么简单都要问,自己一点办法都不会想[mw_shl_code=c,true]//摄像头数据DMA接收完成中断回调函数 void qr_dcmi_rx_callback(void) { u32 *pbuf; u16 i; pbuf=(u32*)(rgb_data_buf+dcmi_curline*qr_image_width);//将rgb_data_buf地址偏移赋值给pbuf if(DMA2_Stream1->CR&(1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2016-6-25
在线时间
21 小时
发表于 2017-2-22 22:47:36 | 显示全部楼层
把这一段函数改成这个就可以了,这么简单都要问,自己一点办法都不会想[mw_shl_code=c,true]//摄像头数据DMA接收完成中断回调函数
void qr_dcmi_rx_callback(void)
{  
        u32 *pbuf;
        u16 i;
        pbuf=(u32*)(rgb_data_buf+dcmi_curline*qr_image_width);//将rgb_data_buf地址偏移赋值给pbuf
       
        if(DMA2_Stream1->CR&(1<<19))//DMA使用buf1,读取buf0
        {
                for(i=0;i<qr_image_width/2;i++)
                {
                        if(dcmi_line_buf[0]<2147483648)dcmi_line_buf[0]=0;
                        else dcmi_line_buf[0]=4294967295;
                        pbuf=dcmi_line_buf[0];
                }
        }else                                                                                 //DMA使用buf0,读取buf1
        {
                for(i=0;i<qr_image_width/2;i++)
                {
                        if(dcmi_line_buf[1]<2147483648)dcmi_line_buf[1]=0;
                        else dcmi_line_buf[1]=4294967295;
                        pbuf=dcmi_line_buf[1];
                }
        }
        dcmi_curline++;
}[/mw_shl_code]
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2016-6-25
在线时间
21 小时
发表于 2017-3-20 13:57:06 | 显示全部楼层
@正点原子  这里我有个问题,DMA传来的是32位的,然后给rgb_data_buf,就是RGB565帧缓存buf,可是这个值是16位的,二值化却要从(2的16次方/2)开始选择,没搞懂。
强制转换成32位的数据,然后回到16位会怎么样。
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2016-6-25
在线时间
21 小时
发表于 2017-3-20 14:07:39 | 显示全部楼层
@正点原子 突然想明白了,哈哈哈,不麻烦您老人家了
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2016-6-25
在线时间
21 小时
发表于 2017-3-20 14:19:43 | 显示全部楼层
改成这样是最好的,刚才那个会影响后面一位的数据。
[mw_shl_code=c,true]//摄像头数据DMA接收完成中断回调函数
void qr_dcmi_rx_callback(void)
{  
        u32 *pbuf;
        u16 i,high,low;
        pbuf=(u32*)(rgb_data_buf+dcmi_curline*qr_image_width);//将rgb_data_buf地址偏移赋值给pbuf
       
        if(DMA2_Stream1->CR&(1<<19))//DMA使用buf1,读取buf0
        {
                for(i=0;i<qr_image_width/2;i++)
                {
                        high=(u16)dcmi_line_buf[0]>>16;
                        low=(u16)dcmi_line_buf[0];
                        if(high<36728)high=0;else high=65535;
                        if(low<36728)low=0;else low=65535;
                        dcmi_line_buf[0]=(u32)high<<16|low;
                        pbuf=dcmi_line_buf[0];
                }
        }else                                                 //DMA使用buf0,读取buf1
        {
                for(i=0;i<qr_image_width/2;i++)
                {
                        high=(u16)dcmi_line_buf[1]>>16;
                        low=(u16)dcmi_line_buf[1];
                        if(high<36728)high=0;else high=65535;
                        if(low<36728)low=0;else low=65535;
                        dcmi_line_buf[1]=(u32)high<<16|low;
                        pbuf=dcmi_line_buf[1];
                }
        }
        dcmi_curline++;
}[/mw_shl_code]
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2012-6-27
在线时间
14 小时
发表于 2017-3-20 23:03:05 | 显示全部楼层
将像素转灰度,中值滤波,后,通过阀值,就成二值化了
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2017-8-1
在线时间
1 小时
发表于 2017-8-1 17:43:46 | 显示全部楼层
搞不懂什么鬼 发表于 2017-3-20 14:19
改成这样是最好的,刚才那个会影响后面一位的数据。
[mw_shl_code=c,true]//摄像头数据DMA接收完成中断回 ...

大神大神  可以发个程序么  在调这个  一直调不出来
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2017-8-1
在线时间
1 小时
发表于 2017-8-1 17:44:27 | 显示全部楼层
搞不懂什么鬼 发表于 2017-3-20 14:19
改成这样是最好的,刚才那个会影响后面一位的数据。
[mw_shl_code=c,true]//摄像头数据DMA接收完成中断回 ...

接触这个时间比较短 希望可以参考您的程序  O(∩_∩)O谢谢
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-7-23
在线时间
7 小时
发表于 2019-7-23 12:03:15 | 显示全部楼层
搞不懂什么鬼 发表于 2017-2-22 22:47
把这一段函数改成这个就可以了,这么简单都要问,自己一点办法都不会想[mw_shl_code=c,true]//摄像头数据DM ...

请问你这个程序写了个for循环,可是里面都没出现过i,而且赋值类型指针什么的好像也有问题呀
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-7-13
在线时间
15 小时
发表于 2019-7-28 15:09:03 | 显示全部楼层
厉害厉害
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-7-29
在线时间
4 小时
发表于 2019-7-29 09:28:23 | 显示全部楼层
默默地带走,感谢
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-7-20
在线时间
17 小时
发表于 2019-7-30 19:50:22 | 显示全部楼层
搞不懂什么鬼 发表于 2017-3-20 14:19
改成这样是最好的,刚才那个会影响后面一位的数据。
[mw_shl_code=c,true]//摄像头数据DMA接收完成中断回 ...

如何进行图像识别处理,大佬
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-15 13:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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