关于如何在OCR之前从图像中过滤出通知的指导

2024-05-19 10:28:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用python处理OCR图像有一段时间了,但是还有一些地方需要改进,所以你的输入和想法会很有帮助

这就是我目前正在做的,成功获得有效ocrText输出的比率大约为15%

ocrImage = cv2.imread(imgName)
ocrImage  = cv2.resize(ocrImage, None, fx=3, fy=3, interpolation=cv2.INTER_LINEAR)  # enlarge 3 times
ocrImage = cv2.cvtColor(ocrImage, cv2.COLOR_BGR2GRAY)  # turn into gray
ret,ocrImage = cv2.threshold(ocrImage,127,255,cv2.THRESH_BINARY)  # conver to balck and white
ocrImage = cv2.morphologyEx(ocrImage, cv2.MORPH_OPEN, np.ones((4,4),np.uint8))  # eliminate the noice 
ocrImage = cv2.morphologyEx(ocrImage, cv2.MORPH_CLOSE, np.ones((4,4),np.uint8))  # make supplement in white dots
cv2.imwrite(ImageName, ocrImage)
ocrText = ocrTool.image_to_string(Image.open(ImageName), builder=pyocr.builders.TextBuilder())

当我试图取得进展,我发现了一个'opencv色彩空间'的博客,它使用下面的代码来绘制成一个三维模型的图像像素。我可以看到所有的背景噪音是在不同的灰色和几乎在某个地区。我觉得这可以帮助我在代码中做之前过滤掉它们,但我不知道怎么做

nemo0 = cv2.imread(ImageName1,1)
nemo1 = cv2.cvtColor(nemo0, cv2.COLOR_BGR2RGB)
r, g, b = cv2.split(nemo1)
fig = plt.figure()
axis = fig.add_subplot(1, 1, 1, projection="3d")
pixel_colors = nemo1.reshape((np.shape(nemo1)[0] * np.shape(nemo1)[1], 3))
norm = colors.Normalize(vmin=-1.0, vmax=1.0)
norm.autoscale(pixel_colors)
pixel_colors = norm(pixel_colors).tolist()
axis.scatter(r.flatten(), g.flatten(), b.flatten(), facecolors=pixel_colors, marker=".")
axis.set_xlabel("Red")
axis.set_ylabel("Green")
axis.set_zlabel("Blue")
currentFig1 = plt.gcf()
currentFig1.savefig(ImageName1.replace(Path, pltPath))

我想看看,如果你能给我一些输入有一个函数,做得更快,或一些代码,并迅速删除灰线之前,我继续处理图像

The example image is in the link here


Tags: 代码图像normnpcv2colorspixelset

热门问题