基于jupyter notebook的python编程-----通过python编程,利用opencv对图像进行处理目录
在进行python学习的时候,最重要的就是对图像进行处理,这是python优于其他语言设计的一个重要原因,python对于图像的处理,是非常的灵活,也是非常的简单,本次博客,将带大家学习怎么使用python进行图像处理本次的实验目的如下:
- 熟悉Python语言中对图像数据读取
- 图像灰度变换处理在图像增强的作用
- 绘制图像灰度直方图的方法
- 利用帧差法对图像进行处理
一、在python命令行下载opencv图像处理库
1、打开python终端命令行
1)、在windows中打开cmd终端,如下所示:
2、在终端输入以下命令,下载opencv-python图像处理库
1)、输入以下命令进行下载:
pip install opencv-python
如果下载太慢,可以通过如下命令进行换源(清华园)下载:
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
2)、下载完成如下所示:
上图学长自己的是已经下载OK的,小伙伴们刚刚下载的时候可能界面出现得不一样,等等就行了,下载很快的
二、准备图片视频数据
1、将自己准备的图片放在相应的位置,记住不要有中文路径、图片的命名也不要是中文的
1)、如下所示:
自己的文件放在D盘下面:
2、准备一段不太长的视频,10秒之内最好,用于帧差法处理图像
1)、准备好视频文件,放置到相应的位置,例如自己的视频放置在D盘下面,路径不做要求,可以中文也可以中文命名
三、运行jupyter notebook,搭建python环境
1、打开Windows终端命令行,输入jupyter notebook,打开我们的jupyter工具,如下所示:
2、在jupyter的web网页中创建python文件,如下所示:
3、现在就可以在jupyter的代码行里面输入我们的代码啦!
四、基于opencv-python的图像处理
1、读取图像并显示
1)、通过python编程,进行读取显示图像的代码如下:
#显示图像
import cv2
src = cv2.imread("D:/myself1.jpg",1)
print(src.shape)
cv2.imshow("myself",src)
cv2.waitKey(0)
- shape参数用于打印图像的尺寸Size
- imread() 函数用于读取图像
- imshow() 用于显示图像
- waitKey() 函数是在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下 键,则接续等待(循环)
2)、运行结果如下:
2、将图像进行反色
1)、图像进行反色的代码如下:
#图像进行反色
import cv2
src = cv2.imread("D:/myself1.jpg",1)
print(src.shape)
cv2.imshow("myself",255-src)
cv2.waitKey(0)
在进行图像的反色的时候,顾名思义,就是将图像的颜色返过去,这也很简单,计算机世界用二进制表示颜色,0-255总共有256种颜色,我们通过用255减去我们调用图像的颜色,就得到我们的反色图像。
2)、运行结果如下:
3、灰度图像的转化
1)、图像灰度转化的代码如下:
import cv2
src = cv2.imread("D:/myself1.jpg",1)
print(src.shape)
gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
cv2.imshow("myself",gray)
cv2.waitKey(0)
- cvtColor() 函数为图像调色函数,第二个参数就是将图像转换为灰色的关键参数
2)、运行结果如下:
5、图像的直方图均衡化
1)、图像直方图均衡化的代码如下:
import cv2
src=cv2.imread( "D:/myself1.jpg",0)
dst2 =cv2.equalizeHist(src) #直方图均衡化
cv2.imshow("myself",src)
cv2.imshow("equalizeHist",dst2)
print (src.shape)
cv2.waitKey(0)
- equalizeHist()函数主要功能就是将图像进行直方图均衡化
2、运行结果如下所示:
6、帧差法进行图像处理,检测视频异常事件
1)、帧差法处理图像的代码如下:
#图像处理帧差法,视频异常事件检测
import cv2
cap=cv2.VideoCapture('D:video.mp4')
ret, frame=cap.read()
prevframe=frame #第一帧
while True:
ret, frame=cap.read()
nextframe=frame #下一帧
if ret:
diff=cv2.absdiff(prevframe,nextframe)
cv2.imshow('video',diff)
prevframe = nextframe #帧差法 背景变化
k=cv2.waitKey(30)&0xff
if k==27:
break
else:
break
cv2.destroyAllWindows()
cap.release()
帧差法的主要函数是absdiff(prevframe,nextframe),前面参数代表前一帧、后面参数代表后一帧,图像帧的相减法,的到的差值,就是图像的变化
**提示:在视频没有播放完之前,video的窗口是叉不掉的,这也就是为什么让大家准备视频在10秒钟之内的原因,强行关闭,程序会报错哦!
2)、运行结果如下:
上图为《环太平洋》截取的片段中处理的画面
用下一帧的图减去上一帧的图,适合背景不动的场景,适用于森林火灾检测等
以上就是本次博客的全部内容啦,希望通过本次博客的阅读,可以让你了解到opencv-python的图像处理机制,也能明白opencv-python库简单函数的运用,例如:imread()函数、imwrite()函数、size()函数等,我们下一期的python学习再见啦!
遇到问题的小伙伴,记得评论区留言哦,林君学长看到会为你解答的,这个学长不太冷!
陈一月的又一天编程岁月^ _ ^