Определите, принадлежит ли крайний пиксель Specifi c горизонтальной, вертикальной или диагональной линии - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть код ниже, который идентифицирует край текстового изображения. Входное изображение:

enter image description here

Выходное изображение:

enter image description here

Я хочу выбрать случайные точки возле границы края текста. Я думал определить, является ли краевой пиксель частью горизонтальной или вертикальной линии. Если это часть горизонтальной линии, я могу выбрать вертикальную случайную точку, иначе, если краевой пиксель является частью вертикальной линии, тогда я могу выбрать случайную горизонтальную точку. Как это сделать в Python? Кроме моей логики c, есть ли лучший способ выбрать случайные точки? Ниже мой исходный код:

from PIL import Image
from matplotlib import pyplot as plt
import numpy as np
import cv2

image_counter = 1
path = 'sample/' + str(image_counter) + '.png'
image = Image.open(path).convert('L')
image_width, image_height = image.size
image = np.array(image)

sigma = .33
# compute the median of the single channel pixel intensities
v = np.median(image)
# apply automatic Canny edge detection using the computed median
lower = int(max(0, (1.0 - sigma) * v))
upper = int(min(255, (1.0 + sigma) * v))


#Edge Detection
edge_image = cv2.Canny(image,lower,upper)
plt.subplot(121),plt.imshow(image,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edge_image,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
plt.show()

#Select random points outside text borders
#Select random points outside text borders

for x in range(image_width):
    for y in range(image_height):
        if (edge_image[x][y] == 255):
            #Check if the edge pixel is part of the horizontal or vertical line.
            #If part of the horizontal line, pick a random point vertically.
            #If part of the vertical line, pick a random point horizontally.
            # How to do it?

Желаемый вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...