如何识别图中条形码区域,要C或C++算法,opencv什么的就算了

kuangbao9 2015-08-06 04:54:40
...全文
1816 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
小不点儿 123 2015-11-11
  • 打赏
  • 举报
回复
请问楼主条形码识别的那块做出来了没呀 ^_^
赵4老师 2015-08-13
  • 打赏
  • 举报
回复
使用MemDC
kuangbao9 2015-08-13
  • 打赏
  • 举报
回复
引用 24 楼 zhao4zhong1 的回复:
剪裁用 BitBlt The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destination device context. BOOL BitBlt( HDC hdcDest, // handle to destination device context int nXDest, // x-coordinate of destination rectangle's upper-left // corner int nYDest, // y-coordinate of destination rectangle's upper-left // corner int nWidth, // width of destination rectangle int nHeight, // height of destination rectangle HDC hdcSrc, // handle to source device context int nXSrc, // x-coordinate of source rectangle's upper-left // corner int nYSrc, // y-coordinate of source rectangle's upper-left // corner DWORD dwRop // raster operation code );
我想问一下,我用DrawToDC显示图片,可是当对话框拖出电脑屏幕之外时,图片就会消失,该怎么弄才可以一直显示呢?
赵4老师 2015-08-12
  • 打赏
  • 举报
回复
我提供一个思路: 先利用颜色直方图,将图片中最亮的一些白色和最暗的一些黑色看成是一种颜色。 再找到这种颜色所占矩形的左上角坐标以及长、宽分别在预先设定的某个范围内的两个矩形。
赵4老师 2015-08-12
  • 打赏
  • 举报
回复
引用 17 楼 zshuaiqin 的回复:
引用 16 楼 zhao4zhong1 的回复:
想获得矩形区域四个点的坐标,还得使用findContours……
smallest_rectangle1(SelectedRegions, Row1, Column1, Row2, Column2) 这个就是获取两个矩形的坐标,返回是数组。用的不是opencv是halcon
哦。我不会halcon,学习了。
艾薇儿More 2015-08-12
  • 打赏
  • 举报
回复
引用 16 楼 zhao4zhong1 的回复:
想获得矩形区域四个点的坐标,还得使用findContours……
smallest_rectangle1(SelectedRegions, Row1, Column1, Row2, Column2) 这个就是获取两个矩形的坐标,返回是数组。用的不是opencv是halcon
赵4老师 2015-08-12
  • 打赏
  • 举报
回复
想获得矩形区域四个点的坐标,还得使用findContours……
艾薇儿More 2015-08-12
  • 打赏
  • 举报
回复
直接下载的图片处理不了,内部错误,我用的是qq截图之后的
艾薇儿More 2015-08-12
  • 打赏
  • 举报
回复
read_image (Image, 'C:/Users/zsq/Desktop/TXG03_0083590211_150728-180534/新建文件夹/QQ图片20150812104514.png')
rgb1_to_gray(Image, GrayImage)
invert_image(GrayImage, ImageInvert)
bin_threshold(ImageInvert, Region)
erosion_circle(Region, RegionErosion, 3.5)
fill_up(RegionErosion, RegionFillUp)
connection(RegionFillUp, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'width', 'and', 150, 99999)
union1(SelectedRegions, RegionUnion)
smallest_rectangle1(SelectedRegions, Row1, Column1, Row2, Column2)
reduce_domain(ImageInvert, RegionUnion, ImageReduced)
源码
kuangbao9 2015-08-12
  • 打赏
  • 举报
回复
引用 12 楼 zhao4zhong1 的回复:
有本事别腐蚀啊。
赵4老师,你赢了。。。。。。
赵4老师 2015-08-12
  • 打赏
  • 举报
回复
有本事别腐蚀啊。
kuangbao9 2015-08-12
  • 打赏
  • 举报
回复
引用 10 楼 zshuaiqin 的回复:
[quote=引用 9 楼 kuangbao9 的回复:] [quote=引用 7 楼 zshuaiqin 的回复:] 试着去做了一下,放心肯定不是c++算法,因为代码不超过10行就做出来了。 我只说思路,自己去写c++代码吧 原图 灰度图 自适应二值化 腐蚀,用圆形腐蚀(半径3.5) 区域填充完毕 选择要选择的区域 (按高度100就行) ok 了
请问你是用什么做的?你这样做可以获得矩形区域四个点的坐标吗?[/quote] 可以的,halcon做的[/quote] 能把你的代码让我参考参考不?
艾薇儿More 2015-08-12
  • 打赏
  • 举报
回复
引用 9 楼 kuangbao9 的回复:
[quote=引用 7 楼 zshuaiqin 的回复:] 试着去做了一下,放心肯定不是c++算法,因为代码不超过10行就做出来了。 我只说思路,自己去写c++代码吧 原图 灰度图 自适应二值化 腐蚀,用圆形腐蚀(半径3.5) 区域填充完毕 选择要选择的区域 (按高度100就行) ok 了
请问你是用什么做的?你这样做可以获得矩形区域四个点的坐标吗?[/quote] 可以的,halcon做的
kuangbao9 2015-08-12
  • 打赏
  • 举报
回复
引用 7 楼 zshuaiqin 的回复:
试着去做了一下,放心肯定不是c++算法,因为代码不超过10行就做出来了。 我只说思路,自己去写c++代码吧 原图 灰度图 自适应二值化 腐蚀,用圆形腐蚀(半径3.5) 区域填充完毕 选择要选择的区域 (按高度100就行) ok 了
请问你是用什么做的?你这样做可以获得矩形区域四个点的坐标吗?
赵4老师 2015-08-12
  • 打赏
  • 举报
回复
剪裁用 BitBlt The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destination device context. BOOL BitBlt( HDC hdcDest, // handle to destination device context int nXDest, // x-coordinate of destination rectangle's upper-left // corner int nYDest, // y-coordinate of destination rectangle's upper-left // corner int nWidth, // width of destination rectangle int nHeight, // height of destination rectangle HDC hdcSrc, // handle to source device context int nXSrc, // x-coordinate of source rectangle's upper-left // corner int nYSrc, // y-coordinate of source rectangle's upper-left // corner DWORD dwRop // raster operation code );
kuangbao9 2015-08-12
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
我就不信不用OpenCV中提到的膨胀、腐蚀相关算法。
赵4老师,能提供一下用opencv该怎么检测吗?详细一点滴。 还有就是,如果我确定了条形码区域的话,在MFC的Picture控件中可以把那些区域单独剪裁出来吗?因为那样便于识别。Thank you
kuangbao9 2015-08-12
  • 打赏
  • 举报
回复
赵4老师,能提供一下用opencv该怎么检测吗?详细一点滴。
kuangbao9 2015-08-12
  • 打赏
  • 举报
回复
引用 20 楼 marslycan 的回复:
我脑洞大开一下...如果是很多这样的图像...可不可以用模板匹配,感觉条形码和背景差距很大..做出一个模板后应该能识别后续图像的条形码位置.....
什么是模板匹配呀?后期是有很多条形码的。而且有的竖的,有些横的。
marslycan 2015-08-12
  • 打赏
  • 举报
回复
我脑洞大开一下...如果是很多这样的图像...可不可以用模板匹配,感觉条形码和背景差距很大..做出一个模板后应该能识别后续图像的条形码位置.....
ljwhb 2015-08-11
  • 打赏
  • 举报
回复
建议考虑动态阈值分割后blob ,根据矩形度选择;或者用灰度投影
加载更多回复(7)

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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