基于jupyter notebook的python编程-----通过python编程,利用opencv-python对图像进行处理


在进行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学习再见啦!
遇到问题的小伙伴,记得评论区留言哦,林君学长看到会为你解答的,这个学长不太冷!
陈一月的又一天编程岁月^ _ ^

发布了59 篇原创文章 · 获赞 66 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42451251/article/details/105056852
今日推荐