Python OpenCV 實現圖像濾波


一、實驗過程

我使用的是python語言+openCV來實現圖像濾波。

使用imread()函數讀取圖片,使用imshow()函數顯示圖片,waitKey()函數含義為按下任意鍵繼續;

代碼示例:

img = cv2.imread("photo1.bmp")

cv2.imshow("img",img)

cv2.waitKey(0)

 結果:

我們可以用pil來實現在圖片上顯示文字,首先先安裝pillow

實例代碼:

#cv2和PIL中顏色的hex碼的儲存順序不同,需轉RGB模式
 pil_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #Image.fromarray()將數組類型轉成圖片格式,與np.array()相反
 pilimg = Image.fromarray(pil_img) draw = ImageDraw.Draw(pilimg)#PIL圖片上打印漢字
 font = ImageFont.truetype("simhei.ttf",50,encoding="utf-8") draw.text((0,0),"原圖像",(255,0,0),font=font) img1 = cv2.cvtColor(np.array(pilimg),cv2.COLOR_RGB2BGR)#將圖片轉成cv2.imshow()可以顯示的數組格式
 cv2.imshow("img1",img1) cv2.waitKey()

結果:

 均值濾波的實例代碼:

img2 = cv2.blur(img,(5,5)) pil_img1 = cv2.cvtColor(img2,cv2.COLOR_BGR2RGB) pilimg1 = Image.fromarray(pil_img1) draw = ImageDraw.Draw(pilimg1)#PIL圖片上打印漢字
 font = ImageFont.truetype("simhei.ttf",20,encoding="utf-8") draw.text((0,0),"均值濾波",(255,0,0),font=font) img3 = cv2.cvtColor(np.array(pilimg1),cv2.COLOR_RGB2BGR) cv2.imshow("img3",img3) cv2.waitKey()

結果:

 中值濾波的實例代碼:

 

img_median = cv2.medianBlur(img, 5) pil_img2 = cv2.cvtColor(img_median,cv2.COLOR_BGR2RGB) pilimg2 = Image.fromarray(pil_img2) draw = ImageDraw.Draw(pilimg2)#PIL圖片上打印漢字
 font = ImageFont.truetype("simhei.ttf",20,encoding="utf-8") draw.text((0,0),"中值濾波",(255,0,0),font=font) img4 = cv2.cvtColor(np.array(pilimg2),cv2.COLOR_RGB2BGR)#將圖片轉成cv2.imshow()可以顯示的數組格式
 cv2.imshow("img4",img4) cv2.waitKey(0)

 

結果:

 高斯濾波的實例代碼:

 

# 高斯濾波
 img_Guassian = cv2.GaussianBlur(img,(5,5),0) pil_img3 = cv2.cvtColor(img_Guassian,cv2.COLOR_BGR2RGB) pilimg3 = Image.fromarray(pil_img3) draw = ImageDraw.Draw(pilimg3)#PIL圖片上打印漢字
 font = ImageFont.truetype("simhei.ttf",20,encoding="utf-8") draw.text((0,0),"高斯濾波",(255,0,0),font=font) img5 = cv2.cvtColor(np.array(pilimg3),cv2.COLOR_RGB2BGR)#將圖片轉成cv2.imshow()可以顯示的數組格式
 cv2.imshow("img5",img5) cv2.waitKey(0)

 

結果:

邊緣檢測的實例代碼:

img6 = cv2.Canny(pil_img3,30,150) img_Guassian = cv2.GaussianBlur(img6,(5,5),0) pil_img4 = cv2.cvtColor(img6,cv2.COLOR_BGR2RGB) pilimg4 = Image.fromarray(pil_img4) draw = ImageDraw.Draw(pilimg4)#PIL圖片上打印漢字
 font = ImageFont.truetype("simhei.ttf",20,encoding="utf-8") draw.text((0,0),"高斯濾波邊緣檢測",(0,255,0),font=font) img7 = cv2.cvtColor(np.array(pilimg4),cv2.COLOR_RGB2BGR) cv2.imshow("img7",img7) cv2.waitKey(0)

結果:

二、實驗中的錯誤

輸入from PIL import Image,ImageDraw,ImageFont報錯,然后發現自己沒有安裝pillow,則我們輸入pip install pillow,在輸入就成功了。

 三、實驗總結

學習了OpenCV的圖像濾波,途中遇到了問題也較快解決,鍛煉了自己的能力。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM