まず、実験
私は、画像フィルタリングを実現するためにPython言語+ OpenCVのを使用しています。
使用関数imread()関数は、表示画像にimshowは()関数を使用して画像を読み込むために、waitKey()を押して続行する任意のキーを意味する機能。
コード例:
IMG = cv2.imread(" photo1.bmp ")
cv2.imshow( "IMG"、IMG)
cv2.waitKey(0)
結果:
PIL我々は最初の枕をインストールし、画面上に表示されるテキストを実装するために使用することができます
サンプルコード:
#CV2 PILと進コードシーケンス異なる色に格納され、RGBモードにニーズ
pil_img = cv2.cvtColor(IMG、cv2.COLOR_BGR2RGB)
#Image.fromarray()アレイ型画像フォーマットへの変換、およびnp.array()対向
pilimg = Image.fromarray(pil_img)
ドロー = ImageDraw.Draw(pilimg) #のPIL漢字でプリントして
フォント = ImageFont.truetype(" simhei.ttf "エンコーディング、50、= " UTF-8 " )
draw.text((0,0)、" 原画像"、(255,0,0)、フォント= フォント)
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的图像滤波,途中遇到了问题也较快解决,锻炼了自己的能力。