Python中的圖像處理之Python圖像平滑操作
前言
隨著人工智能研究的不斷興起,Python的應(yīng)用也在不斷上升,由于Python語(yǔ)言的簡(jiǎn)潔性、易讀性以及可擴(kuò)展性,特別是在開(kāi)源工具和深度學(xué)習(xí)方向中各種神經(jīng)網(wǎng)絡(luò)的應(yīng)用,使得Python已經(jīng)成為最受歡迎的程序設(shè)計(jì)語(yǔ)言之一。由于完全開(kāi)源,加上簡(jiǎn)單易學(xué)、易讀、易維護(hù)、以及其可移植性、解釋性、可擴(kuò)展性、可擴(kuò)充性、可嵌入性:豐富的庫(kù)等等,自己在學(xué)習(xí)與工作中也時(shí)常接觸到Python,這個(gè)系列文章的話主要就是介紹一些在Python中常用一些例程進(jìn)行仿真演示!
本系列文章主要參考楊秀章老師分享的代碼資源,楊老師博客主頁(yè)是Eastmount,楊老師興趣廣泛,不愧是令人膜拜的大佬,他過(guò)成了我理想中的樣子,希望以后有機(jī)會(huì)可以向他請(qǐng)教學(xué)習(xí)交流。
因?yàn)樽约菏亲鰣D像語(yǔ)音出身的,所以結(jié)合《Python中的圖像處理》,學(xué)習(xí)一下Python,OpenCV已經(jīng)在Python上進(jìn)行了多個(gè)版本的維護(hù),所以相比VS,Python的環(huán)境配置相對(duì)簡(jiǎn)單,缺什么庫(kù)直接安裝即可。本系列文章例程都是基于Python3.8的環(huán)境下進(jìn)行,所以大家在進(jìn)行借鑒的時(shí)候建議最好在3.8.0版本以上進(jìn)行仿真。本文繼續(xù)來(lái)對(duì)本書(shū)第十章的后4個(gè)例程進(jìn)行介紹。
一. Python準(zhǔn)備
如何確定自己安裝好了python
win+R輸入cmd進(jìn)入命令行程序

點(diǎn)擊“確定”

輸入:python,回車(chē)

看到Python相關(guān)的版本信息,說(shuō)明Python安裝成功。
二. Python仿真
(1)新建一個(gè)chapter10_06.py文件,輸入以下代碼,圖片也放在與.py文件同級(jí)文件夾下
# -*- coding: utf-8 -*-
# By:Eastmount CSDN 2021-06-07
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取圖片
img = cv2.imread('te.png')
source = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#雙邊濾波
result = cv2.bilateralFilter(source, 15, 150, 150)
#用來(lái)正常顯示中文標(biāo)簽
plt.rcParams['font.sans-serif']=['SimHei']
#顯示圖形
titles = ['原始圖像', '雙邊濾波']
images = [source, result]
for i in range(2):
plt.subplot(1,2,i+1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show() 保存.py文件
輸入eixt()退出python,輸入命令行進(jìn)入工程文件目錄

輸入以下命令,跑起工程
python chapter10_06.py

沒(méi)有報(bào)錯(cuò),直接彈出圖片,運(yùn)行成功!

(2)新建一個(gè)chapter10_07.py文件,輸入以下代碼,圖片也放在與.py文件同級(jí)文件夾下
# -*- coding: utf-8 -*-
# By:Eastmount CSDN 2021-06-07
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取圖片
img = cv2.imread('te.png')
source = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#均值濾波
result1 = cv2.blur(source, (5,5))
result2 = cv2.blur(source, (10,10))
#方框?yàn)V波
result3 = cv2.boxFilter(source, -1, (5,5), normalize=1)
result4 = cv2.boxFilter(source, -1, (2,2), normalize=0)
#高斯濾波
result5 = cv2.GaussianBlur(source, (3,3), 0)
result6 = cv2.GaussianBlur(source, (15,15), 0)
#中值濾波
result7 = cv2.medianBlur(source, 3)
#高斯雙邊濾波
result8 =cv2.bilateralFilter(source, 15, 150, 150)
#顯示圖形
titles = ['Source', 'Blur 5*5', 'Blur 10*10', 'BoxFilter 5*5',
'BoxFilter 2*2', 'GaussianBlur 3*3', 'GaussianBlur 15*15',
'medianBlur', 'bilateralFilter']
images = [source, result1, result2, result3,
result4, result5, result6, result7, result8]
for i in range(9):
plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
保存.py文件輸入以下命令,跑起工程
python chapter10_07.py

沒(méi)有報(bào)錯(cuò),直接彈出圖片,運(yùn)行成功!

(3)新建一個(gè)chapter10_08.py文件,輸入以下代碼,圖片也放在與.py文件同級(jí)文件夾下
# -*- coding: utf-8 -*-
# By:Eastmount CSDN 2021-06-07
import cv2
import numpy as np
import matplotlib.pyplot as plt
#讀取圖片
img = cv2.imread('test01_yn.png')
source = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
#中值濾波
result1 = cv2.medianBlur(source, 3)
#高斯雙邊濾波
result2 =cv2.bilateralFilter(source, 15, 150, 150)
#均值遷移
result3 = cv2.pyrMeanShiftFiltering(source, 20, 50)
#用來(lái)正常顯示中文標(biāo)簽
plt.rcParams['font.sans-serif']=['SimHei']
#顯示圖形
titles = ['原始圖像', '中值濾波', '雙邊濾波', '均值遷移']
images = [source, result1, result2, result3]
for i in range(4):
plt.subplot(2,2,i+1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show() 保存.py文件輸入以下命令,跑起工程
python chapter10_08.py

沒(méi)有報(bào)錯(cuò),直接彈出圖片,運(yùn)行成功!

(4)新建一個(gè)chapter10_09.py文件,輸入以下代碼,圖片也放在與.py文件同級(jí)文件夾下
# -*- coding:utf-8 -*-
import cv2
import numpy as np
#讀取圖片
img = cv2.imread("te.png", cv2.IMREAD_UNCHANGED)
rows, cols, chn = img.shape
#加噪聲
for i in range(5000):
x = np.random.randint(0, rows)
y = np.random.randint(0, cols)
img[x,y,:] = 255
cv2.imshow("noise", img)
#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()保存.py文件輸入以下命令,跑起工程
python chapter10_09.py

沒(méi)有報(bào)錯(cuò),直接彈出圖片,運(yùn)行成功!

三. 小結(jié)
本文主要介紹在Python中調(diào)用OpenCV庫(kù)對(duì)圖像進(jìn)行圖像平滑濾波處理與圖像加噪處理,如雙邊濾波,高斯雙邊濾波,圖像加隨機(jī)噪聲等操作。由于本書(shū)的介紹比較系統(tǒng)全面,所以會(huì)出一個(gè)系列文章進(jìn)行全系列仿真實(shí)現(xiàn),感興趣的還是建議去原書(shū)第十章深入學(xué)習(xí)理解,下一篇文章將繼續(xù)介紹第十一章節(jié)的5例仿真實(shí)例。每天學(xué)一個(gè)Python小知識(shí),大家一起來(lái)學(xué)習(xí)進(jìn)步阿!
到此這篇關(guān)于Python中的圖像處理之Python圖像平滑處理操作的文章就介紹到這了,更多相關(guān)Python圖像平滑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python簡(jiǎn)單實(shí)現(xiàn)Http服務(wù)端
這篇文章主要為大家介紹了使用Python簡(jiǎn)單實(shí)現(xiàn)Http服務(wù)端示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Python爬蟲(chóng)實(shí)戰(zhàn)之使用Scrapy爬取豆瓣圖片
在用Python的urllib和BeautifulSoup寫(xiě)過(guò)了很多爬蟲(chóng)之后,本人決定嘗試著名的Python爬蟲(chóng)框架——Scrapy.本次分享將詳細(xì)講述如何利用Scrapy來(lái)下載豆瓣名人圖片,需要的朋友可以參考下2021-06-06
Python中CSV文件(逗號(hào)分割)實(shí)戰(zhàn)操作指南
CSV文件默認(rèn)以英文逗號(hào)做為列分隔符,換行符作為行分隔符,下面這篇文章主要給大家介紹了關(guān)于Python中CSV文件(逗號(hào)分割)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Python連接Impala實(shí)現(xiàn)步驟解析
這篇文章主要介紹了Python連接Impala實(shí)現(xiàn)步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
python socket網(wǎng)絡(luò)編程之粘包問(wèn)題詳解
這篇文章主要介紹了python socket網(wǎng)絡(luò)編程之粘包問(wèn)題詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python3.5多進(jìn)程原理與用法實(shí)例分析
這篇文章主要介紹了Python3.5多進(jìn)程原理與用法,結(jié)合實(shí)例形式分析了多進(jìn)程的原理、單進(jìn)程、多進(jìn)程、進(jìn)程類及進(jìn)程隊(duì)列等相關(guān)定義與使用技巧,需要的朋友可以參考下2019-04-04
Python pandas之求和運(yùn)算和非空值個(gè)數(shù)統(tǒng)計(jì)
數(shù)據(jù)處理的過(guò)程中經(jīng)常會(huì)遇到判斷空值和求和運(yùn)算的需求,所以下面這篇文章主要給大家介紹了關(guān)于Python pandas之求和運(yùn)算和非空值個(gè)數(shù)統(tǒng)計(jì)的相關(guān)資料,需要的朋友可以參考下2021-08-08
將Python的Django框架與認(rèn)證系統(tǒng)整合的方法
這篇文章主要介紹了將Python的Django框架與認(rèn)證系統(tǒng)整合的方法,包括指定認(rèn)證后臺(tái)和編寫(xiě)認(rèn)證后臺(tái)等內(nèi)容,需要的朋友可以參考下2015-07-07
Python解決Flutter項(xiàng)目簡(jiǎn)體字問(wèn)題的方法
作為面向大陸外市場(chǎng)的應(yīng)用,我們經(jīng)常編寫(xiě)代碼的時(shí)候往往忘記切換繁體字導(dǎo)致上線后出現(xiàn)簡(jiǎn)體字,因?yàn)檠芯肯聵I(yè)內(nèi)相關(guān)插件,看看怎么好解決這個(gè)問(wèn)題,OpenCC 支持語(yǔ)言比較多,所以基于此嘗試了用 Python 去實(shí)現(xiàn),需要的朋友可以參考下2024-07-07

