Как убрать фоновый шум при выполнении вычитания OpenCV-изображения? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть два изображения: одно - изображение документа, а другое - изображение шаблона.

Document Image

Template Image

Я выполняю вычитание изображения OpenCV между изображением документа и изображением шаблона.

from matplotlib import pyplot as plt
import numpy as np
import cv2
template_img = cv2.imread('data_3/template.png')
document_img = cv2.imread('data_3/document.png')
result_img = cv2.subtract(template_img,document_img)
plt.imshow(result_img)
plt.title('Result Image')
plt.show()

Вывод вышеуказанной программы:

enter image description here

Здесь фоновым шумом является Apt.no. Вычитание изображения OpenCV не очень хорошо работает.

Одна вещь, которую я заметил, почему вычитание изображения не работает должным образом, потому что качество обоих изображений не одинаково. Есть ли способ убрать фоновый шум, возникший при вычитании изображения?

1 Ответ

0 голосов
/ 27 июня 2018

Код не требует пояснений.

import numpy as np
import cv2

if __name__ == '__main__':

    image = cv2.imread('image.png',cv2.IMREAD_GRAYSCALE)
    template = cv2.imread('template.png',cv2.IMREAD_GRAYSCALE)

    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
    template = cv2.morphologyEx(template, cv2.MORPH_ERODE, kernel,iterations = 2)

    image[template == 0] = 255

    cv2.imshow('image', image)
    cv2.imshow('tmpl', template)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

result

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