Ich möchte ein Bild mit dem Scikit-Image-Modul für die Skelettierung skelettieren. Dieses Bild wird von der OpenCV-Bibliothek vorverarbeitet. ein Bild ‚Feb_16-0.jpg‘ gegeben, konvertiere ich es in Graustufen, führen die morphologische Transformation des Bildes zu öffnen, dann gelten die Gaußsche Unschärfe und adaptive Schwellwertbildung mit OpenCV und Python:Ein in OpenCV transformiertes Bild kann nicht über scikit-image verarbeitet werden.
import cv2
import numpy as np
from matplotlib import pyplot as plt
from skimage.morphology import skeletonize
from skimage.viewer import ImageViewer
img = cv2.imread('Feb_16-0.jpg',0)
kernel = np.ones((1,1),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
blur = cv2.GaussianBlur(opening,(1,1),0)
ret3,th4 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
ich jetzt will um das Bild mit scikit-image skimage.morphology.skeletonize zu skelettieren. Ich habe versucht, Code zum Ausführen von Erosion und Dilatation zu schreiben, um das Bild mit OpenCV und Python manuell zu skelettieren. Dies erwies sich jedoch als sehr ineffiziente Verarbeitung. Daher entschied ich mich an dieser Stelle zur scikit-image-Bibliothek zu wechseln. Allerdings, wenn ich die numpy Array vorverarbeitet durch OpenCV zum scikit-Bildmodul mit dem Code übergeben:
skel = skeletonize(th4)
und versuchen, die Ergebnisse derselben zu betrachten, enden I mit dem Fehler up:
Image contains values other than 0 and 1
Ich bin nicht in der Lage, die Ursache für das gleiche zu interpretieren. Kann mir jemand bei der Lösung dieses Datentypfehlers helfen?
Hallo, ich danke Ihnen für Ihren freundlichen Vorschlag. Aber ich bekomme einen ähnlichen Fehler am binärisierten Eingang th4 statt img. th4 ist das binärisierte Bild mit Schwellenwert. –
Scheint, dass cv2.treshold() ein Array mit 255 als weiß und 0 als schwarz zurückgibt. Sie können die th4-Matrix konvertieren. Ich werde meinen Beitrag bearbeiten – user1337