OpenCV - 附加图像

时间:2017-03-28 12:49:22

标签: python opencv

我在白色背景上有一些黑色文字的扫描文档图像。我首先反转图像,因此背景=黑色,所有文本=白色。

然后我使用OpenCV的reduce()函数给我一个垂直投影图像,看起来有点像:(图像中每行所有像素值的总和) < / p>

0,
0,
0,
434
34
0,
0,

由此可以看出,0像素值表示背景,而值<>。 0描述了一些文字。

从这里开始,我循环查找像素值,查找下一个值!= 0(下一个值包含文本)的任何0值,并将位置存储在两个元组列表中pairedCoordinates[(23, 43), (54, 554)]等......

从那时起,我可以遍历pairedCoordinates并在我感兴趣的区域周围绘制boundingRects

for start, finish in pairedCoordinates:
    height = finish - start
    cv2.rectangle(small, (0, start), (0+cols, start + height), (255, 255, 255), 1)

到目前为止,一切正常。我接下来要做的是,对于每个矩形,将其内部内容(像素)附加到另一个列表,这样我就可以仅对rects中包含的图像的各个部分执行进一步的计算。

我尝试了以下内容:

# Initialise an empty list 
roi = [] 

然后在上面的for循环中,我添加了额外的:

for start, finish in pairedCoordinates:
    height = finish - start
    cv2.rectangle(small, (0, start), (0+cols, start + height), (255, 255, 255), 1)

    # cols = the number of collumns in the image, small being the image
    glyph = small[y: start + height, x:0+cols] 
    roi.append(glyph)

尝试此代码时,我得到'未解析的x&amp; amp;我有点不确定为什么。

有人可以指出我如何真正实现我上面解释的正确方向。

更新 正如Miki在评论中所提到的,我忘了初始化x,y。 我在计算字形之前简单地定义了x=0 y=0,这似乎就是诀窍。

我遇到了一些循环遍历每个区域并将它们写入文件的问题。创建的每个新图像文件只是将下一个像素附加到现有图像,而不是单独写入每个边界矩形?

for i, r in enumerate(roi):
    cv2.imwrite("roi_%02d.png" % i, r)

0 个答案:

没有答案