Code: Select all
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("C:/users/XXX/test.png", -1)
Ich habe mit verschiedenen morphologischen Operationen herumgespielt, aber ich scheine keine gute Arbeit zu finden. Der bisher vielversprechendste Ansatz: < /p>
Nach (einfach) Binarisierung erhalte ich Folgendes: < /p>
Code: Select all
img = (img > 0) * 1
img = img.astype('uint8')
plt.imshow(img, cmap = "gray", vmin = 0, vmax = 1)
plt.show()
plt.close()
Besser
Oder unter Verwendung einer leichten Unschärfe im Voraus:
Code: Select all
img = cv2.medianBlur(img, 3)
img = (img > 0) * 1
img = img.astype('uint8')
plt.imshow(img, cmap = "gray", vmin = 0, vmax = 1)
plt.show()
plt.close()
Schließen mit einem asymmetrischen Kernel.
Code: Select all
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (15,3))
imgClose = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
plt.imshow(imgClose, cmap = "gray", vmin = 0, vmax = 1)
plt.show()
plt.close()
Was ich erreichen möchte (rote Zeile von Hand):
Irgendeine Idee, wie man dorthin komme?