目录
参考链接(bilibili):
我愿称之为史上最强opencv,难得看到有人把opencv讲的如此通俗易懂_哔哩哔哩_bilibili
搭建好python环境后,在文件–setting里下载包opencv python,然后就可一开始代码啦。实在看不懂可以看这个b站视频,里面的环境搭建很详细。
捕捉录像
这段代码是导入电脑摄像头 按q结束。VideoCapture(”文件目录”),可以得到目标文件,而示例代码中的参数0是获取自己电脑的摄像头。
int waitKey(int delay=0)delay:为0时,则会一直显示这一帧
import cv2
cap = cv2.VideoCapture(0)#获取摄像头
cap.set(3,640)
cap.set(4,480)
cap.set(10,100)#调节亮度
while True:
success, img = cap.read()
cv2.imshow("video",img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
图片灰度化
下面的代码是能够将图片灰度化。cvtcolor()函数,cvt是convert(转换)的缩写,简单理解这个函数为将图像从一个颜色空间转换为另一个颜色空间。
import cv2
img = cv2.imread("sources/lena.webp")
#灰度化处理
imgGray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
cv2.imshow("Gray Image",imgGray)
cv2.waitKey(0)
这是灰度化处理之后的图像
图像模糊化处理
GaussianBlur函数,高斯滤波(平滑处理、图像降噪)处理。void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT);
src指的是输入图像;dst为目标图像;ksize,高斯内核的大小;sigmaX,表示高斯核函数在X方向的的标准偏差;sigmaY,表示高斯核函数在Y方向的的标准偏差;
import cv2
img = cv2.imread("sources/lena.webp")
#灰度化处理
imgGray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#高斯滤波处理
imgBlur = cv2.GaussianBlur(imgGray,(7,7),0)
cv2.imshow("Gray Image",imgGray)
cv2.imshow("Blur Image",imgBlur)
cv2.waitKey(0)
处理之后的图像对比
图像边缘化处理
需要注意的是,边缘检测只能对灰度图像进行处理,并且在进行边缘化处理之前,要先进行降噪,否则效果会很差。这里用到的是canny函数,一种非常重要的算法,这是坎尼在1986年写的一篇论文里仔细论述的。他给出了判断边缘提取方法性能的指标。而坎尼算子也是图像处理领域里的标准方法,也可以说是默认的方法。
import cv2
img = cv2.imread("sources/lena.webp")
#灰度化处理
imgGray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#高斯滤波处理
imgBlur = cv2.GaussianBlur(imgGray,(7,7),0)
#图像边缘化处理
imgCanny = cv2.Canny(img,100,100)
cv2.imshow("Gray Image",imgGray)
cv2.imshow("Blur Image",imgBlur)
cv2.imshow("Canny Image",imgCanny)
cv2.waitKey(0)
图像膨胀和腐蚀
这里导入了numpy库,没下的宝宝们记得去下载哦。在文件-settings–project:python project–project interprete里的+号,搜索numpy下载就可以啦。然后定义核:kenel
图像膨胀的详细说明可以看这个链接,说的很好理解。主要就是更好的区分主题和背景
数字图像处理—通俗理解腐蚀与膨胀_alw_123的博客-CSDN博客_图像腐蚀和膨胀的作用
import cv2
import numpy as np
img = cv2.imread("sources/lena.webp")
kenel = np.ones((5,5),np.uint8)
#灰度化处理
imgGray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#高斯滤波处理
imgBlur = cv2.GaussianBlur(imgGray,(7,7),0)
#图像边缘化处理
imgCanny = cv2.Canny(img,100,100)
#图像膨胀
imgDialation = cv2.dilate(imgCanny,kenel,iterations=1)
cv2.imshow("Gray Image",imgGray)
cv2.imshow("Blur Image",imgBlur)
cv2.imshow("Canny Image",imgCanny)
cv2.imshow("Dialation Image",imgDialation)
cv2.waitKey(0)
以下是图像膨胀和侵蚀后的图片,可以看出图像更加纯净了