今天第一次装了opencv,强大的图像处理库,于是我们先上安装过程
我是在conda环境下安装的,选择自己的python环境
conda activate pytorch
然后执行下面安装opencv,默认是最新版本。
pip install opencv-python
pip install opencv-contrib-python
安装完毕后
进行检查安装是否成功
(pytorch) C:\Users\j00431635>python
Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.5.5'
>>>
能成功输出cv的版本即可成功。
然后下面我们基于已有的一些图像处理的知识做一些好玩的练练手,代码是抄袭的,但是每一个步骤我们需要看懂,每个个运算函数过程后面的数学原理和图像处理原理我们得搞明白,这样方便我们以后使用。
参考自:https://zhuanlan.zhihu.com/p/62703610
import cv2
# cap = cv2.VideoCapture('D:/KK_Movies/kk 2022-01-23 18-27-04.mp4')
cap = cv2.VideoCapture('D:/KK_Movies/kk 2022-01-23 18-21-21.mp4')
while True:
ret, frame = cap.read() # 获得图像的每一帧
if frame is None:
break
# 图像灰度化
img_gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
# 高斯模糊
img_blurred = cv2.GaussianBlur(img_gray, (3, 3), 0)
# 图像二值化,采用自适应二值化
img_threshold1 = cv2.adaptiveThreshold(img_blurred, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 2)
# 再次对二值化图像进行模糊
img_threshold1_blurred = cv2.GaussianBlur(img_threshold1, (3, 3), 0)
# 再次进行二值化
_, img_threshold2 = cv2.threshold(img_threshold1_blurred, 200, 255, cv2.THRESH_BINARY)
# 对图像进行开区间操作,其实就是膨胀和腐蚀操作
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3)) # 得到一个3*3的核
# 因此当我们对一个图像先腐蚀再膨胀的时候,一些小的区块就会由于腐蚀而消失,再膨胀回来的时候大块区域的边线的宽度没有发生变化,这样就起到了消除小的噪点的效果。图像先腐蚀再膨胀的操作就叫做开运算。
img_opening = cv2.bitwise_not(cv2.morphologyEx(cv2.bitwise_not(img_threshold2), cv2.MORPH_OPEN, kernel))
# 再次对二值化图像进行模糊
img_opening_blurred = cv2.GaussianBlur(img_opening, (3, 3), 0)
# 最后展示代码
cv2.imshow('img_opening_blurred', img_opening_blurred)
# 按下q键就退出
if cv2.waitKey(40) & 0xFF == ord('q'):
break
# 程序退出后,就毁灭窗口。
cv2.destroyAllWindows()
下面看下试验效果