1. Bildfüllung
Definieren Sie zunächst die Bildanzeigefunktion:
def cv_show(name, img):
cv2.imshow(name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Bild lautete:
img_cat = cv2.imread('cat.jpg')
Definieren Sie die Größe des Bildabstands:
top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)
Als nächstes verwenden Sie zum Füllen die Kopiermethode, die Reflexionsmethode, die Umverpackungsmethode und die konstante Methode.
Kopiermethode:
# 复制法,复制最边缘像素
replicate = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
Reflexionsmethode:
# 反射法,对感兴趣的图像中的像素在两边进行复制
reflect = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REFLECT)
zweite Reflexionsmethode
# 反射法,也就是以最边缘像素为周,对称
reflect101 = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size,
borderType=cv2.BORDER_REFLECT_101)
Verpackungsmethode:
# 外包装法
warp = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_WRAP)
Konstante Methode:
# 常量法,常数值填充,此处填充灰色
constant = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_CONSTANT,
value=0)
Die Ausgabeergebnisse werden wie folgt verglichen:
2. Morphologische Operation
Lesen Sie zunächst das Rohbild ein:
pie = cv2.imread('pie.jfif')
Definieren Sie den Faltungskern:
kernel = np.ones((10, 10), np.uint8)
Korrosionsfunktion:
dige_erosion = cv2.erode(pie, kernel=kernel, iterations=1)
Die Ausgabe ist wie folgt:
Inflationsfunktion:
dige_dilate = cv2.dilate(pie, kernel=kernel, iterations=1)
Die Ausgabe ist wie folgt:
Offene Operation: Zuerst korrodieren und dann erweitern
opening = cv2.morphologyEx(pie, cv2.MORPH_OPEN, kernel=kernel)
Die Ausgabe ist wie folgt:
Geschlossener Betrieb: Erst ausdehnen und dann korrodieren
closing = cv2.morphologyEx(pie, cv2.MORPH_CLOSE, kernel=kernel)
Die Ausgabe ist wie folgt:
Gradient: Dilatation-Erosion
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)
Die Ausgabe ist wie folgt:
Zylinder: Originaleingabe – Ergebnis öffnen
tophat = cv2.morphologyEx(pie, cv2.MORPH_TOPHAT, kernel)
Die Ausgabe ist wie folgt:
Black Hat: Geschlossener Betrieb – Roheingabe
blackhat = cv2.morphologyEx(pie, cv2.MORPH_BLACKHAT, kernel)
Die Ausgabe ist wie folgt:
3. Bildglättung
Übergeben Sie das Rohbild:
Mittelwertfilterung: Eine einfache Durchschnittsfaltungsoperation
blur = cv2.blur(cat, (3, 3))
Box-Filterung: Im Grunde dasselbe wie der Mittelwert. Sie können die Normalisierung auswählen und normalisieren, wenn die Normalisierung wahr ist, genau wie der Mittelwertfilter
box = cv2.boxFilter(cat, -1, (3, 3), normalize=True)
Wenn die Normalisierung den Wert „Falsch“ hat, wird keine Normalisierung und keine Mittelwertverarbeitung durchgeführt. Nach dem Überschreiten der Grenze wird 255 genommen
box = cv2.boxFilter(cat, -1, (3, 3), normalize=False)
Gaußsche Filterung: Der Wert im Faltungskern der Gaußschen Unschärfe erfüllt die Gaußsche Verteilung, was einer stärkeren Aufmerksamkeit für die Mitte entspricht
gaussian = cv2.GaussianBlur(cat, (3, 3), 1)
Medianfilterung: entspricht dem Ersetzen durch den Median
median = cv2.medianBlur(cat, 3)