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的图像滤波,途中遇到了问题也较快解决,锻炼了自己的能力。

原文地址:https://www.cnblogs.com/CJR-QYF/p/12427399.html

时间: 2024-09-30 11:40:00

Python OpenCV 实现图像滤波的相关文章

Python+OpenCV实现图像边缘提取、图像滤波功能

在Jupyter Notebook上使用Python实现下述代码的边缘提取.图像滤波功能,这个过程中实现某些功能处理出来的图像可能会有点粗糙.关于opencv库的安装可以参考:Python下opencv库的安装过程与一些问题汇总. 一.边缘提取 import cv2#导入opencv库 #读取原灰度图片 image=cv2.imread("test.bmp") cv2.imshow("image", image)#将原图片命名为“image”显示出来 #图像的阈值分

使用Python+OpenCV进行图像模板匹配(Match Template)

http://bluewhale.cc/2017-09-22/use-python-opencv-for-image-template-matching-match-template.html 原文地址:https://www.cnblogs.com/eustoma/p/9403582.html

FilterEngine 类解析——OpenCV图像滤波核心引擎(zz)

<2>FilterEngine 类解析——OpenCV图像滤波核心引擎 FilterEngine类是OpenCV关于图像滤波的主力军类,OpenCV图像滤波功能的核心引擎.各种滤波函数比如blur, GaussianBlur,到头来其实是就是在函数末尾处定义了一个Ptr<FilterEngine>类型的f,然后f->apply( src, dst )了一下而已. 这个类可以把几乎是所有的滤波操作施加到图像上.它包含了所有必要的中间缓存器.有很多和滤波相关的create系函数的

python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)

目录 一:边缘提取 1.对图像进行阈值分割并反色 2.边缘提取 二:图像滤波 1.读取原图 2.均值滤波 3.中值滤波 4.高斯滤波 5.高斯边缘检测 三:边缘检测算子 1.显示原图 2.对图像进行反色 3.对图像用sobel方法进行边缘检测 4.对图像用robert方法进行边缘检测 四:投影 1.显示原图 2.垂直方向投影 3.水平方向投影 五:车牌字符分割 1.读取原图 2.灰度转换 3.反色 4.阈值分割 5.投影 6.字符识别匹配分割 ??机器视觉是人工智能正在快速发展的一个分支.简单说

【opencv学习笔记1】5种图像滤波辨析:方框、均值、高斯、中值、双边

图像滤波 什么是图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性. 图像滤波的目的 a.消除图像中混入的噪声 b.为图像识别抽取出图像特征 图像滤波的要求 a.不能损坏图像轮廓及边缘 b.图像视觉效果应当更好 滤波器的定义 滤波器,顾名思义,是对波进行过滤的器件.(摘自网络) 以上的定义是针对物理器件的,但对于图像滤波而言显然也是适用的. 大家都用过放大镜,这里就以此举一个例

opencv学习之路(12)、图像滤波

一.图像滤波简介 二.方框滤波--boxFilter() 1 #include<opencv2/opencv.hpp> 2 using namespace cv; 3 4 void main(){ 5 Mat src=imread("E://1.jpg"); 6 Mat dst; 7 //方框滤波器,-1代表原图像深度,size内核大小,true按权重相加(此时等于均值滤波),false按原像素相加(所以很多像素点都大于了255,如上图所示) 8 boxFilter(src

opencv第三课,图像滤波

1.介绍 OpenCV图像处理技术中比较热门的图像滤波操作主要被分为了两大类:线性邻域滤波和非线性滤波.线性邻域滤波常见的有“方框滤波“,”均值滤波“和”高斯滤波“三种,二常见的非线性滤波主要是中值滤波”和“双边滤波”.本文将将简略介绍这几种滤波操作的不同点,以及他们各自的特点. 2.理论与概念讲解 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性.消除图像中的噪声成分叫作图像的平滑化

【OpenCV】5种图像滤波辨析:方框、均值、高斯、中值、双边

图像滤波 什么是图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性.(摘自网络) 图像滤波的目的 1,消除图像中混入的噪声 2,为图像识别抽取出图像特征 图像滤波的要求 1,不能损坏图像轮廓及边缘 2,图像视觉效果应当更好 滤波器的定义 滤波器,顾名思义,是对波进行过滤的器件.(摘自网络) 以上的定义是针对物理器件的,但对于图像滤波而言显然也是适用的. 大家都用过放大镜,这里就

OpenCV基础(六)---图像滤波

图像滤波 对图像进行单个像素操作,主要是进行对比度和阈值处理 而图像滤波在像素邻域间进行,一来达到我们希望的效果,二来进一步进行图像特征提取 滤波分为空间域和频域滤波,空间域滤波又分线性.非线性滤波 常用的线性滤波有,均值滤波,高斯滤波:非线性滤波有中值滤波,双边滤波 线性滤波 均值模糊:blur() void blur( InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int borderTyp