1. Remplissage d'images
Définissez d'abord la fonction d'affichage de l'image :
def cv_show(name, img):
cv2.imshow(name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Image lue :
img_cat = cv2.imread('cat.jpg')
Définissez la taille du rembourrage de l'image :
top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)
Ensuite, utilisez la méthode de copie, la méthode de réflexion, la méthode d'emballage extérieur et la méthode constante pour remplir.
Méthode de copie :
# 复制法,复制最边缘像素
replicate = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
Méthode de réflexion :
# 反射法,对感兴趣的图像中的像素在两边进行复制
reflect = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REFLECT)
deuxième méthode de réflexion
# 反射法,也就是以最边缘像素为周,对称
reflect101 = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size,
borderType=cv2.BORDER_REFLECT_101)
Méthode d'emballage :
# 外包装法
warp = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_WRAP)
Méthode constante :
# 常量法,常数值填充,此处填充灰色
constant = cv2.copyMakeBorder(img_cat, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_CONSTANT,
value=0)
Les résultats de sortie sont comparés comme suit :
2. Opération morphologique
Première lecture dans l'image brute :
pie = cv2.imread('pie.jfif')
Définissez le noyau de convolution :
kernel = np.ones((10, 10), np.uint8)
Fonction corrosion :
dige_erosion = cv2.erode(pie, kernel=kernel, iterations=1)
La sortie est la suivante :
Fonction de gonflage :
dige_dilate = cv2.dilate(pie, kernel=kernel, iterations=1)
La sortie est la suivante :
Opération ouverte : corroder d'abord, puis dilater
opening = cv2.morphologyEx(pie, cv2.MORPH_OPEN, kernel=kernel)
La sortie est la suivante :
Opération fermée : se dilater d'abord, puis se corroder
closing = cv2.morphologyEx(pie, cv2.MORPH_CLOSE, kernel=kernel)
La sortie est la suivante :
Dégradé : Dilatation-Érosion
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)
La sortie est la suivante :
Chapeau haut de forme : entrée d'origine - résultat ouvert
tophat = cv2.morphologyEx(pie, cv2.MORPH_TOPHAT, kernel)
La sortie est la suivante :
Black Hat : opération fermée - entrée brute
blackhat = cv2.morphologyEx(pie, cv2.MORPH_BLACKHAT, kernel)
La sortie est la suivante :
3. Lissage des images
Passer en image brute :
Mean Filtering : une simple opération de convolution moyenne
blur = cv2.blur(cat, (3, 3))
Filtrage de boîte : fondamentalement identique à la valeur moyenne, vous pouvez choisir la normalisation, normaliser lorsque la normalisation est vraie, identique au filtre de valeur moyenne
box = cv2.boxFilter(cat, -1, (3, 3), normalize=True)
Lorsque normalize est False, la normalisation n'est pas effectuée et le traitement de la valeur moyenne n'est pas effectué, et 255 est pris après le franchissement de la limite
box = cv2.boxFilter(cat, -1, (3, 3), normalize=False)
Filtrage gaussien : la valeur dans le noyau de convolution du flou gaussien satisfait la distribution gaussienne, ce qui équivaut à accorder plus d'attention au milieu
gaussian = cv2.GaussianBlur(cat, (3, 3), 1)
Filtrage médian : équivalent à remplacer par médian
median = cv2.medianBlur(cat, 3)