我怎样才能找到最接近特定点的文本?
How can i find the text that is the closets to a specific point?
我有一张图像,其标记点为最上坐标和最左坐标,我需要从该坐标找到相应的文本以获得该行的长度。
不允许我使用原始图像,所以我尝试重新创建它。我需要得到蓝色坐标下的 1700 和红色坐标下的 2777 才能找到每边的大小。现在我有了该点的坐标,我正在考虑围绕该点制作一个 ROI 并在该 ROI 中找到文本,但我不知道该怎么做。
现在我得到最外面的点是这样的:
import cv2
import numpy as np
image = cv2.imread('assets/bpcrop_3.png')
blur = cv2.GaussianBlur(image, (3,3), 0)
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 220, 255, cv2.THRESH_BINARY_INV)
kernel = np.ones((3,3), np.uint8)
dilation = cv2.dilate(thresh, kernel, iterations=35)
cnts = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
c = max(cnts, key=cv2.contourArea)
left = tuple(c[c[:, :, 0].argmin()][0])
right = tuple(c[c[:, :, 0].argmax()][0])
top = tuple(c[c[:, :, 1].argmin()][0])
bottom = tuple(c[c[:, :, 1].argmax()][0])
我只需要知道顶部和左侧坐标旁边的文本,这样我就可以将该文本用作蓝图大小的输出。
我有一张图像,其标记点为最上坐标和最左坐标,我需要从该坐标找到相应的文本以获得该行的长度。
不允许我使用原始图像,所以我尝试重新创建它。我需要得到蓝色坐标下的 1700 和红色坐标下的 2777 才能找到每边的大小。现在我有了该点的坐标,我正在考虑围绕该点制作一个 ROI 并在该 ROI 中找到文本,但我不知道该怎么做。
现在我得到最外面的点是这样的:
import cv2
import numpy as np
image = cv2.imread('assets/bpcrop_3.png')
blur = cv2.GaussianBlur(image, (3,3), 0)
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 220, 255, cv2.THRESH_BINARY_INV)
kernel = np.ones((3,3), np.uint8)
dilation = cv2.dilate(thresh, kernel, iterations=35)
cnts = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
c = max(cnts, key=cv2.contourArea)
left = tuple(c[c[:, :, 0].argmin()][0])
right = tuple(c[c[:, :, 0].argmax()][0])
top = tuple(c[c[:, :, 1].argmin()][0])
bottom = tuple(c[c[:, :, 1].argmax()][0])
我只需要知道顶部和左侧坐标旁边的文本,这样我就可以将该文本用作蓝图大小的输出。