Как проверить, изменила ли команда cv2.line изображение в python opencv - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть изображение (черно-белое) с высоким разрешением, и мне нужна информация, если моя команда рисования (например, cv2.line (...)) изменила изображение. Комментарий: есть вероятность, что пиксель уже в цвете cv.line (), тогда изображение не изменилось.

В настоящее время я сравниваю все изображение, которое очень медленно (у меня есть сделать эту проверку несколько раз 1000 раз.)

img = LARGE IMAGE
#make copy
imgBuffer= img.copy()
#draw on copy
imgBuffer= cv2.line(imgBuffer, point1, point2, colorBlack, 1);

# calc if there is any difference in the images
diffExist = np.any(cv2.absdiff(drawnImageBuffer, contourImage))  

Есть ли у кого-нибудь более эффективная идея сделать это?

1 Ответ

0 голосов
/ 30 апреля 2020

Очевидное улучшение скорости, которое вы можете добиться, это сравнение только тех частей изображения, которые могли измениться, путем рисования линии, соединяющей ваши две заданные точки - субизображение, ограниченное двумя точками, которые вы передаете в cv2 .line ().

Так будет быстрее работать:

img_buffer = orig_img.copy()
x1, y1 = point1
x2, y2 = point2
# make sure x1 and y1 are the lower values
if x2 < x1:
    x1, x2 = x2, x1
if y2 < y1:
    y1, y2 = y2, y1

cv2.line(img_buffer, point1, point2, colorBlack, 1)

diff_exist = np.any(cv2.absdiff(img_buffer[y1:y2, x1:x2],
                                orig_img[y1:y2, x1:x2]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...