3.2.OpenCV スキル ツリー - バイナリ画像処理 - 画像の縮小と拡張

1. 記事内容の出典

1.题目来源:https://edu.csdn.net/skill/practice/opencv-43cb627865154bb69eaad017845e8944/8295?language=opencv&materialId=20783
2.资料来源:https://edu.csdn.net/skill/opencv/opencv-43cb627865154bb69eaad017845e8944?category=658

2. 画像伸張処理

2.1. 画像拡大の原理の紹介

图像膨胀原理:
膨胀过程是有一个结构元素或者模板去在原图像素比对.
当比对过程中,中心像素位置的值根据其八邻域(看取得kernel卷积核的大小)取或运算。
或运算为1就取自己的中心值,否则将周围的最大值去代替中心值,
如下图。由于将周围的最大值去代替中心值,所膨胀的就是白色(高亮部分)

膨胀函数解析:
膨胀函数cv2.dilate(img,kernel,iterations)
1.img:原图像
2.kernel:指膨胀操作的内核,默认3x3的卷积核,也可以自己选择修改。
3.iterations:迭代次数,默认为1.

2.2. 画像拡張コアコード

import cv2
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def dilate_example(image):
    #图像灰度化处理
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    #图像阈值化处理
    ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
    #设定卷积核函数
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    dst = cv2.dilate(binary, kernel)#图像膨胀处理
    
    figure=[image,gray,binary, dst]
    title=[u'原始图像',u'灰度图像',u'阈值化处理图像',u'膨胀化图像']
    for i in range(4):
        plt.subplot(1,4,i+1)
        plt.imshow(figure[i],'gray')
        plt.title(title[i])
        plt.xticks([])
        plt.yticks([])
    plt.show()

if __name__=='__main__':
    img = cv2.imread(r"D:\HuaweiMoveData\Users\27182\Desktop\opencv\3.Binary image processing\lena.png")
    dilate_example(img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

2.3. 画像拡大効果表示

                ここに画像の説明を挿入します

3. 画像腐食処理

3.1. 画像腐食の原理の概要

图像腐蚀原理:
腐蚀过程是有一个结构元素或者模板去在原图像素比对.
当比对过程中,中心像素位置的值根据其八邻域(看取得kernel卷积核的大小)取或运算。
或运算为1就取自己的中心值,否则将周围的最大值去代替中心值,
如下图。由于将周围的最大值去代替中心值,所腐蚀的就是白色(高亮部分),高亮部分会变黑.

腐蚀函数解析:
腐蚀函数:cv2.erode(img,kernel,iterations)
1.img:原图像
2.kernel:指腐蚀操作的内核,默认3x3的卷积核,也可以自己选择修改。
3.iterations:迭代次数,默认为1.

3.2. 画像がコアコードを腐食する

import cv2
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def dilate_example(image):
    #图像灰度化处理
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    #图像阈值化处理
    ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
    #设定卷积核函数
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    dst = cv2.erode(binary, kernel)#图像腐蚀处理
    
    figure=[image,gray,binary, dst]
    title=[u'原始图像',u'灰度图像',u'阈值化处理图像',u'腐蚀化图像']
    for i in range(4):
        plt.subplot(1,4,i+1)
        plt.imshow(figure[i],'gray')
        plt.title(title[i])
        plt.xticks([])
        plt.yticks([])
    plt.show()

if __name__=='__main__':
    img = cv2.imread(r"D:\HuaweiMoveData\Users\27182\Desktop\opencv\3.Binary image processing\lena.png")
    dilate_example(img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

3.3. 画像腐食効果表示

                ここに画像の説明を挿入します

4. よくある間違いのまとめと考察

易错点反思与总结:
1.膨胀函数:cv2.dilate(img,kernel,iterations),每一个参数就算是默认也要写出来!!
2.腐蚀函数:cv2.erode(img,kernel,iterations),每一个参数就算是默认也要写出来!!
3.腐蚀和膨胀是对白色部分而言的,原先黑色部分的处理没有影响。
4.kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (x, x))可以根据自己意愿设定卷积核。

おすすめ

転載: blog.csdn.net/m0_71819746/article/details/133655248