gpt4 book ai didi

python - 使用 OpenCv 检测图像上的文本并计算使用的面积

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:46 25 4
gpt4 key购买 nike

我想检测文本 block 在图像上使用的区域的百分比。这个想法是拒绝包含超过 40% 文本的图像。我看到一篇关于检测文本的内容非常丰富且详细的帖子here 。该链接正在使用 C++。我想我可以想到在 python 中使用它。

但是,我不确定测量其使用面积百分比的最佳方法是什么。我们可以使用类似的实现吗?我刚刚开始使用简历。

我使用 python 获取如下文本。这是我从在线论坛找到的有效代码。

import cv2

def captch_ex(file_name):
img = cv2.imread(file_name)
img_final = cv2.imread(file_name)
img2gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 180, 255, cv2.THRESH_BINARY)
image_final = cv2.bitwise_and(img2gray, img2gray, mask=mask)
ret, new_img = cv2.threshold(image_final, 180, 255, cv2.THRESH_BINARY)



kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (3,3))
dilated = cv2.dilate(new_img, kernel, iterations=9)

contours, hierarchy = cv2.findContours(dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

for contour in contours:

[x, y, w, h] = cv2.boundingRect(contour)


if w < 35 and h < 35:
continue

cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 255), 2)


cv2.imshow('captcha_result', img)
cv2.waitKey()

file_name = 'my_image.jpg'
captch_ex(file_name)

但是,我该如何进一步进行?

最佳答案

一个好的起点是

  1. 计算边界框的总面积 (w*h)。这对应于被文本覆盖的图像的总面积。

  2. 将其与图像中的像素总数(行*列)进行比较

请注意,该值并不准确,因为可能存在不同的字体大小和行距。要确定 40% 的图像被文本覆盖的确切边距,您应该通过挑选几张大约 40% 被文本覆盖的图像来找到阈值,无论是高于还是低于人类识别的该数量。

关于python - 使用 OpenCv 检测图像上的文本并计算使用的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44422965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com