Обнаружение точек Брайля на изображении с использованием OpenCVPython

Программы на Python
Ответить
Anonymous
 Обнаружение точек Брайля на изображении с использованием OpenCV

Сообщение Anonymous »

В проекте я хочу обнаружить точки Брайля на тарелке. Я делаю картинку, на которой делаю свое обнаружение благодаря функции linkedComponentsWithStats. Несмотря на мои попытки, мне так и не удалось получить пороговое значение, при котором обнаруживаются все точки и только они. У меня возникнет та же проблема, если я попытаюсь использовать обнаружение круга. Я пытаюсь использовать сопоставление шаблонов по совету учителя, но у меня также возникают проблемы с обнаружением, поскольку единственным фактором, который на него влияет, является пороговое значение.

Код: Выделить всё

import matplotlib.pyplot as plt

img1 = cv.imread(r"traitement\prod.png")

plt.figure(figsize=(40,40))
plt.subplot(3,1,1)

gray_img = cv.cvtColor(img1, cv.COLOR_BGR2GRAY)

test = cv.adaptiveThreshold(gray_img, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY_INV, 11, 6)

_, _, boxes, _ = cv.connectedComponentsWithStats(test)

boxes = boxes[1:]
filtered_boxes = []
for x,y,w,h,pixels in boxes:
if pixels < 1000 and h < 35 and w < 35 and h > 14 and w > 14 and x > 15 and y > 15:
filtered_boxes.append((x,y,w,h))

for x,y,w,h in filtered_boxes:
W = int(w)/2
H = int(h)/2
#print(w)
cv.circle(img1,(x+int(W),y+int(H)),2,(0,255,0),20)

cv.imwrite("gray.png",gray_img)
cv.imwrite("test.png",test)

plt.imshow(test)

plt.subplot(3,1,2)
plt.imshow(img1)

Код: Выделить всё

import cv2 as cv
import numpy as np
from imutils.object_detection import non_max_suppression
import matplotlib.pyplot as plt

img = cv.imread('traitement/prod.png')
temp_gray = cv.imread('dot.png',0)

W, H = temp.shape[:2]
thresh = 0.6

img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
match = cv.matchTemplate(image=img_gray, templ=temp_gray, method=cv.TM_CCOEFF_NORMED)

(y_points, x_points) = np.where(match >= thresh)

boxes = list()

for (x, y) in zip(x_points, y_points):

# update our list of rectangles
boxes.append((x, y, x + W, y + H))

boxes = non_max_suppression(np.array(boxes))

# loop over the final bounding boxes
for (x1, y1, x2, y2) in boxes:
cv.circle(img,(x1+int(W/2),y1+int(H/2)),2,(255,0,0),15)

plt.figure(figsize=(40,40))
plt.subplot(3,1,1)
plt.imshow(img)

Изображение с адаптивным порогом:
Изображение

Изображение с обнаружением шаблона:
[img]https:// i.sstatic.net/TYuvR.jpg[/img]


Подробнее здесь: https://stackoverflow.com/questions/725 ... ing-opencv
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»