這篇文章將為大家詳細(xì)講解有關(guān)python+opencv邊緣提取與各函數(shù)參數(shù)的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、opencv+python環(huán)境搭建
其實能寫python的就能寫opencv,但是工具很總要,代碼提示也很重要,你可能會用submit vs等工具,submit編碼個人覺得不夠智能,vs的話過完年我學(xué)的方向不一致,所以沒用
推薦 pycharm ,在項目setting中的項目解釋器中安裝 opencv-python 即可進(jìn)行編碼。python環(huán)境搭建也灰常方便。
二、邊緣提取案例
import cv2 def edge_demo(image): #GaussianBlur圖像高斯平滑處理 blurred = cv2.GaussianBlur(image, (3, 3), 0) #(3, 3)表示高斯矩陣的長與寬都是3,意思就是每個像素點按3*3的矩陣在周圍取樣求平均值,,標(biāo)準(zhǔn)差取0 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) #顏色模式轉(zhuǎn)換成cv2.COLOR_BGR2GRAY模式下的灰度圖像 edge_output = cv2.Canny(gray, 50, 150) #提取上一步中處理好的圖像邊緣,50和150分別代表低閾值和高閾值,高閾值用來將物體與背景區(qū)分開來,低的用于平滑連接高閾值產(chǎn)生的片段,使圖像成一個整體 cv2.imshow("canny edge", edge_output)#輸出灰度圖像 #原圖與灰度圖像與運(yùn)算,按照灰度圖剪切加和的原圖 dst = cv2.bitwise_and(image, image, mask=edge_output) cv2.imshow("color edge", dst)#輸出帶顏色邊緣圖像 if __name__ == '__main__': img = cv2.imread("cat.jpg") # cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE) cv2.imshow("input image", img) edge_demo(img) cv2.waitKey(0)#等待鍵盤輸入,不輸入 則無限等待 cv2.destroyAllWindows()#清除所以窗口
三、解釋功能函數(shù)
其實上面的代碼也是用的別人的,但絕大多數(shù)都沒有解釋,對于像我這種新手不是很友好
高斯處理
圖像處理中,常用的濾波算法有均值濾波、中值濾波以及高斯濾波等。
三種濾波器的對比:
濾波器種類 基本原理 特點
均值濾波 使用模板內(nèi)所有像素的平均值代替模板中心像素灰度值 易收到噪聲的干擾,不能完全消除噪聲,只能相對減弱噪聲
中值濾波 計算模板內(nèi)所有像素中的中值,并用所計算出來的中值體改模板中心像素的灰度值 對噪聲不是那么敏感,能夠較好的消除椒鹽噪聲,但是容易導(dǎo)致圖像的不連續(xù)性
高斯濾波 對圖像鄰域內(nèi)像素進(jìn)行平滑時,鄰域內(nèi)不同位置的像素被賦予不同的權(quán)值 對圖像進(jìn)行平滑的同時,同時能夠更多的保留圖像的總體灰度分布特征
意思就是使你的圖像灰度分布更均勻,每個點的像素均為周圍 按3*3的矩陣在周圍取樣求平均值,,標(biāo)準(zhǔn)差取0來處
blurred = cv2.GaussianBlur(image, (3, 3), 0) #GaussianBlur圖像高斯平滑處理 #(3, 3)表示高斯矩陣的長與寬都是3,意思就是每個像素點按3*3的矩陣在周圍取樣求平均值,,標(biāo)準(zhǔn)差取0
灰度轉(zhuǎn)換----》也叫做二值化處理
故名思意就是轉(zhuǎn)換成黑白圖像,后面的參數(shù)中 cv2.COLOR_BGR2GRAY 其實就是色彩模式,所以函數(shù)名為 cvtColor(色彩模式轉(zhuǎn)換)
cvtColor()用于將圖像從一個顏色空間轉(zhuǎn)換到另一個顏色空間的轉(zhuǎn)換(目前常見的顏色空間均支持),并且在轉(zhuǎn)換的過程中能夠保證數(shù)據(jù)的類型不變, 即轉(zhuǎn)換后的圖像的數(shù)據(jù)類型和位深與源圖像一致
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) #顏色模式轉(zhuǎn)換成cv2.COLOR_BGR2GRAY模式下的灰度圖像
邊緣識別提取
這一步是將二值化后的圖像提取邊緣,50和150分別代表低閾值和高閾值,高閾值用來將物體與背景區(qū)分開來,低的用于平滑連接高閾值產(chǎn)生的片段,使圖像成一個整體
簡明而言就是,小的用于細(xì)小的地方處理,大的宏觀處理----》大閾值用于分離背景與輪廓,曉得用于拼接細(xì)小的輪廓,即可形成一個整體
edge_output = cv2.Canny(gray, 50, 150) #提取上一步中處理好的圖像邊緣,50和150分別代表低閾值和高閾值,高閾值用來將物體與背景區(qū)分開來,低的用于平滑連接高閾值產(chǎn)生的片段,使圖像成一個整體
輸出即可,小面的函數(shù)只是對比學(xué)習(xí)而已,可以不用
(對于dst = cv2.bitwise_and(image, image, mask=edge_output) cv2.imshow("color edge", dst)#輸出帶顏色邊緣圖像
)
關(guān)于“python+opencv邊緣提取與各函數(shù)參數(shù)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享文章:python+opencv邊緣提取與各函數(shù)參數(shù)的示例分析-創(chuàng)新互聯(lián)
URL鏈接:http://jinyejixie.com/article34/depgpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、微信小程序、品牌網(wǎng)站設(shè)計、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容