資源簡介
利用Python集成了20多常用的圖像處理方法,包括二值化、邊緣檢測、開閉運算、高斯模糊、直方圖等操作。僅需要讀取圖片便能運行,可在Python3環境下直接運行,無需調整。
代碼片段和文件信息
import?PySpin
import?os
import?cv2
import?numpy?as?np
import?tkinter?as?tk
import?matplotlib.pyplot?as?plt
from?PIL?import?ImageImageTk
from?tkinter.filedialog?import?*
def?acquire_images():
????global?file_path
????file_path?=?tk.filedialog.askopenfilename()
????print(file_path)
????#?img?=?cv2.imread(file_path)
????#?area1.create_image(400?400?image?=?img)
#?二值化處理圖像
def?Threshold():
????image?=?cv2.imread(file_path)
????gray?=?cv2.cvtColor(image?cv2.COLOR_BGR2GRAY)
????#此為全局閾值
????#BINARY是執行二值化操作,后面的OTSU是具體執行的二值化閾值方法,可以選擇其他
????#更改0255可以指定閾值
????ret?binary?=?cv2.threshold(gray?0?255?cv2.THRESH_BINARY?|?cv2.THRESH_OTSU)
????#使用局部閾值25為blocksize參數,必須為奇數,10為每塊局部設置的參考值,每塊像素塊的其他值減去均值大于10,
????#則執行置0或者置255操作
????#?binary?=?cv2.adaptiveThreshold(gray?255?cv2.ADAPTIVE_THRESH_GAUSSIAN_C?cv2.THRESH_BINARY?2510)
????#顯示計算出來的閾值
????print(‘threshold?value?is?:?%s‘?%ret)
????#控制顯示窗口大小
????cv2.namedWindow(‘Threshold‘?0)
????cv2.resizeWindow(‘Threshold‘?600?600)
????cv2.imshow(‘Threshold‘?binary)
????#?ret?thresh?=?cv2.threshold(image?0?255?cv2.THRESH_OTSU)
????#?plt.imshow(image?‘gray‘)
????#?plt.title(‘OTSU‘)
????#?plt.xticks([])plt.yticks([])
????#?plt.show()
#模糊操作,利用卷積原理
def?blur():
????image?=?cv2.imread(file_path)
????#此為均值模糊
????#(301)為一維卷積核,指在x,y方向偏移多少位
????#?dst?=?cv2.blur(image?(30?1))
????#此為中值模糊,常用于去除椒鹽噪聲
????#?dst?=?cv2.medianBlur(image?15)
????#自定義卷積核,執行模糊操作,也可定義執行銳化操作
????#定義卷積核kernel為5*5的單位矩陣,因為像素值為0-255,所以除以25防止溢出,25為矩陣內元素個數
????#?kernel?=?np.ones([1010]?np.float32)/100
????kernel?=?np.array([[0?-1?0]?[-1?5?-1]?[0?-1?0]]?np.float32)
????dst?=?cv2.filter2D(image?-1?kernel=kernel)
????cv2.namedWindow(‘Blur‘?0)
????cv2.resizeWindow(‘Blur‘?600?600)
????cv2.imshow(‘Blur‘?dst)
????cv2.namedWindow(‘input_image‘?0)
????cv2.resizeWindow(‘input_image‘?600?600)
????cv2.imshow(‘input_image‘?image)
def?clamp(pv):
????if?pv?>?255:
????????return?255
????elif?pv?0:
????????return?0
????else:
????????return?pv
#給圖片增加高斯噪聲,計算花費很長時間
def?gaussian_noise():
????image?=?cv2.imread(file_path)
????h?w?c?=?image.shape
????for?row?in?range(h):
????????for?col?in?range(w):
????????????s?=?np.random.normal(0?20?3)
????????????b?=?image[row?col?0]??#blue
????????????g?=?image[row?col?1]??#green
????????????r?=?image[row?col?2]??#red
????????????image[row?col?0]?=?clamp(b?+?s[0])
????????????image[row?col?1]?=?clamp(g?+?s[1])
????????????image[row?col?2]?=?clamp(r?+?s[2])
????cv2.namedWindow(‘Gaussian_noise‘?0)
????cv2.resizeWindow(‘Gaussian_noise‘?600?600)
????cv2.imshow(‘Gaussian_noise‘?image)
#高斯模糊,能保留圖片的主要特征
def?gaussian_blur():
????image?=?cv2.imread(file_path)
????dst?=?cv2.GaussianBlur(image?(0?0)?15)
????cv2.namedWindow(‘Gaussian_blur‘?0)
????cv2.resizeWindow(‘Gaussian_blur‘?600?600)
????cv2.imshow(‘Gaussian_blur‘?dst)
#邊緣保留濾波
def?epf():
????image?=?cv2.imread(file_pat
- 上一篇:BP神經網絡(馬疝病數據集).zip
- 下一篇:snn脈沖神經網絡.py
評論
共有 條評論