【发布时间】:2012-04-05 02:10:52
【问题描述】:
所以我有一张用sobel方法处理过的图像,现在我需要提取该图像。
我的问题是如何从中线 uo 开始逐行扫描图像,当边缘数小于 60 时,记录该坐标以裁剪图像。
有问题的图像是条码,这种方法应该只用于提取条形。问题在于 emgu cv 的实现。
更新:
我按照本文描述的方法:http://bit.ly/HUWdcy
本题参考C.图像提取章节
【问题讨论】:
所以我有一张用sobel方法处理过的图像,现在我需要提取该图像。
我的问题是如何从中线 uo 开始逐行扫描图像,当边缘数小于 60 时,记录该坐标以裁剪图像。
有问题的图像是条码,这种方法应该只用于提取条形。问题在于 emgu cv 的实现。
更新:
我按照本文描述的方法:http://bit.ly/HUWdcy
本题参考C.图像提取章节
【问题讨论】:
检查cv::threshold 和cv::reduce 函数。
首先将从您的边缘图像创建一个二进制地图,条纹为黑色,背景为白色。
像这个小例子:
边缘之后
1 70 0 0 85 128 99 0
1 70 0 0 85 128 99 0
1 70 0 0 85 128 99 0
1 70 0 0 85 120 99 0
1 74 0 0 85 138 99 0
1 80 0 0 85 128 99 0
1 72 0 0 85 128 99 0
阈值后
0 255 0 0 255 255 255 0
0 255 0 0 255 255 255 0
0 255 0 0 255 255 255 0
0 255 0 0 255 255 255 0
0 255 0 0 255 255 255 0
0 255 0 0 255 255 255 0
0 255 0 0 255 255 255 0
第二个函数可用于将图像“投影”到其中一个维度上,使用 CV_MAX、CV_SUM 或 CV_AVG,您会将条形码存储在一行中
reduce 和 SUM 的示例:
0 1785 0 0 1785 1785 1785 0
现在,重新应用阈值:
0 1 0 0 1 1 1 0
【讨论】: