VB如何获取图片里面的矩型并保存?

penguinhzf 2012-04-12 07:25:31
假设我现在有个BMP图片,里面有N个由黑色边框组成的矩型,我如何能通过代码来获取这N个矩型,并保存在RECT变量里呢?谢谢!

最好提供代码,衷心感谢!
...全文
182 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
penguinhzf 2012-04-23
  • 打赏
  • 举报
回复
感激各位,学到了不少东西.结帖了
dianyancao 2012-04-18
  • 打赏
  • 举报
回复
二值化就是将Picture转换成一个二维数组,
霍夫变换参看:http://blog.csdn.net/tt2com/article/details/4757071
penguinhzf 2012-04-18
  • 打赏
  • 举报
回复
但问题是我这些矩型只是边框为黑色,里面都是白色,不需要二值化了,就是边框是黑色,其他位置都是白色。

这个思路又该如何呢?谢谢各位。
王二.麻子 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

哈哈花了一晚上终于从自己的验证码识别模块中抠出几个功能,重写程序,已经可以达到要求了,哈哈


代码和具体细节还是你自己完成吧,虽然我有代码,但是我可以提供思路

这里假设获取最大矩形,这里的最大矩形是不包含于任意其他矩形,可以这样做

1)将原图二值化读入字节数组
2)设定一个合适阈值C,用广度优先搜索,找到的连通区域如果总像素小于该阈值C,标记为白色
3)提取黑白交界的边缘……
[/Quote]
好的不懂得.

受教了
贝隆 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
哈哈花了一晚上终于从自己的验证码识别模块中抠出几个功能,重写程序,已经可以达到要求了,哈哈


代码和具体细节还是你自己完成吧,虽然我有代码,但是我可以提供思路

这里假设获取最大矩形,这里的最大矩形是不包含于任意其他矩形,可以这样做

1)将原图二值化读入字节数组
2)设定一个合适阈值C,用广度优先搜索,找到的连通区域如果总像素小于该阈值C,标记为白色
3)提取黑白交界的边缘线……
[/Quote]
佩服
dianyancao 2012-04-16
  • 打赏
  • 举报
回复
哈哈花了一晚上终于从自己的验证码识别模块中抠出几个功能,重写程序,已经可以达到要求了,哈哈


代码和具体细节还是你自己完成吧,虽然我有代码,但是我可以提供思路

这里假设获取最大矩形,这里的最大矩形是不包含于任意其他矩形,可以这样做

1)将原图二值化读入字节数组
2)设定一个合适阈值C,用广度优先搜索,找到的连通区域如果总像素小于该阈值C,标记为白色
3)提取黑白交界的边缘线,并根据连通性分成几个互不连通的区域
4)霍夫变换得到矩形边所在直线的 直线集合
5)每次取出一条未使用的最长的矩形边,并标记为已使用,用这条矩形边和其他未使用的矩形边扩充成一个最大的矩形,
若该矩形不完全包含于任何一个已经保存下的矩形,则保存该矩形信息
6)重复步骤5,直到没有未使用的矩形边

原图:

提取的边界:

设置阈值的霍夫变换结果:
dianyancao 2012-04-16
  • 打赏
  • 举报
回复
楼主你是否希望下面两个区域得到一样的结果呢?
penguinhzf 2012-04-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

http://topic.csdn.net/u/20111020/10/761040d8-db59-4a49-9add-c3153a7dfe82.html
好像和这个帖子差不多
[/Quote]

没错,其实跟这个帖子意思差不多,大家有没有代码给我呢?

OpenCV我不太想用,一来难找,二来可能调试都比较复杂。我只是自己运行而已,所以只要能达到我的目的就行了,慢点没关系,但千万不要说一两个小时都运行不了就行了。谢谢各位!
dianyancao 2012-04-13
  • 打赏
  • 举报
回复
看不到图片
贝隆 2012-04-13
  • 打赏
  • 举报
回复
个人看法:问题的关键在于怎么识别你要的区域?保存都好说。
dianyancao 2012-04-13
  • 打赏
  • 举报
回复
企鹅大人请把BMP图片贴出来~~,这样大家才好提供思路代码啊~
王二.麻子 2012-04-13
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20111020/10/761040d8-db59-4a49-9add-c3153a7dfe82.html
好像和这个帖子差不多
嗷嗷叫的老马 2012-04-12
  • 打赏
  • 举报
回复
那只能判断这黑色边框的像素了.

不过还有一个简单的办法,就是模式识别,调用OpenCV库吧.

记得以前有人发了个VB的示例,能识别圆和方框,并返回其参数,如圆心或长宽等,找找吧
bcrun 2012-04-12
  • 打赏
  • 举报
回复
这好像是图像识别,我不会。楼主升级成2个三角啦,恭喜!

809

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧