Python OpenCV 实现图像滤波
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                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的圖像濾波,途中遇到了問題也較快解決,鍛煉了自己的能力。
總結
以上是生活随笔為你收集整理的Python OpenCV 实现图像滤波的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java声明变量简单程序_零基础学编程之
- 下一篇: 怎么清理路由器垃圾怎么用手机清除路由器垃
