opencv+python实战日记 入门篇(一)车牌识别 捕捉录像、图片灰度化、 图像模糊化处理、图像边缘化处理、图像膨胀和腐蚀

  • Post author:
  • Post category:python



目录


捕捉录像


图片灰度化


图像模糊化处理


图像边缘化处理


图像膨胀和腐蚀


参考链接(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)

以下是图像膨胀和侵蚀后的图片,可以看出图像更加纯净了




版权声明:本文为qq_53500523原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。