opencv入门使用

这篇博客详细介绍了OpenCV的基本操作,包括显示图片、视频、启用摄像头、图像转换(如灰度图、高斯模糊、边缘检测)、图像变换(尺寸、裁剪、颜色变换)、图像绘制(线条、矩形、圆形、文字)、透视变换、HSV颜色空间操作、轮廓检测、人脸检测、以及两个综合应用示例——屏幕水彩笔和车牌检测。通过实例展示了OpenCV的强大功能。
摘要由CSDN通过智能技术生成

Opencv入门使用

学习国外视频之后手打的教程,若有不对的地方请留言==

1.显示图片

import cv2

img = cv2.imread("./resources/KS.jpg")
//窗口名称, 图片对象
cv2.imshow('Output', img)
//图片永久停留, n*1000: 停留n秒后消失
cv2.waitKey(0)

效果
在这里插入图片描述

2.显示视频

cap = cv2.VideoCapture("./resources/twilight.mp4")

#设置循环,读取视频=读取每一帧图片
while True:
    success, img = cap.read()
    cv2.imshow("Video", img)
    //视频持续播放,如果按s键(设定的字母用小写),视频关闭
    if cv2.waitKey(1) & 0xFF == ord('s'):
        break

效果
在这里插入图片描述

3.启用摄像头

//0表示使用的摄像头,有1个摄像头就填入0
cap = cv2.VideoCapture(0)
//3代表宽度项,640为设置的宽度值
cap.set(3, 640)
//4代表高度项,480为设置的高度值
cap.set(4, 480)
//10代表亮度项, 100为设置的亮度
cap.set(10, 100)

while True:
    success, img = cap.read()
    cv2.imshow("Video", img)
    //摄像头持续开着,如果按s键(设定的字母用小写),摄像头关闭
    if cv2.waitKey(1) & 0xFF == ord('s'):
        break

效果
我就不露镜了

4.原图–>灰度图

img = cv2.imread("resources/KS.jpg")
//使用cvtColor功能,把彩图img的通道BGR转到GRAY(opencv中彩图通道顺序是BGR)
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
//窗口名称,显示的图片
cv2.imshow('Gray Image', imgGray)
cv2.waitKey(0)

效果
在这里插入图片描述

5.原图–>灰度图–>高斯模糊图

img = cv2.imread("resources/KS.jpg")
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
//(blur1,blur2)是高斯核的大小,选取一般是奇数,模糊度和数字大小成正比
//进行滤波的图像的长宽比如果为1:1,那么选取blur时,一般设置blur1=blur2
//如果要进行滤波的图像的长宽比大致为m:n,那么选取blur时,尽量是blur1:blur2=m:n
//sigmaX – X方向上的高斯核标准偏差
imgBlur = cv2.GaussianBlur(imgGray, (3, 5), sigmaX=0)
cv2.imshow('Blur Image', imgBlur)
cv2.waitKey(0)

效果
在这里插入图片描述

6.原图–>边缘图

img = cv2.imread("resources/KS.jpg")
//两个阈值越大,轮廓线条越少
imgCanny = cv2.Canny(img, 200, 250) 
cv2.imshow('Canny Image', imgCanny)
cv2.waitKey(0)

效果
在这里插入图片描述

7.原图–>边缘图–>膨胀图

img = cv2.imread("resources/KS.jpg")
imgCanny = cv2.Canny(img, 200, 250)
//kernel是滑动窗口,在图像上进行从左到右,从上到下的平移,如果方框中存在白色,那么这个方框内所有的颜色都是白色
//uint8,表示变量是无符号整数,范围是0到255
//uint8是指0~2^8-1 = 255数据类型
kernel = np.ones((3, 3), np.uint8)
//iteration表示迭代的次数
imgDilation = cv2.dilate(imgCanny, kernel, iterations=1)
cv2.imshow('Dilation Image', imgDilation)
cv2.waitKey(0)

效果
在这里插入图片描述

8.原图–>边缘图–>膨胀图–>腐蚀图

img = cv2.imread("resources/KS.jpg")
imgCanny = cv2.Canny(img, 200, 250)
kernel = np.ones((3, 3), np.uint8)
imgDilation = cv2.dilate(imgCanny, kernel, iterations=1)
imgEroded = cv2.erode(imgDilation, kernel, iterations=1)
cv2.imshow('Eroded Image', imgEroded)
cv2.waitKey(0)

效果
在这里插入图片描述

9.图像尺寸变换

//(430, 690, 3) (h, w, 3)原始图像尺寸
img = cv2.imread("resources/car.png")
//opencv图像的起始坐标在左上角
//使用opencv变换时,输入的是(w, h) !!!
imgResize = cv2.resize(img, (350, 200))

cv2.imshow('Image', img)
cv2.imshow('Image Resize', imgResize)
cv2.waitKey(0)

效果
在这里插入图片描述

10.图片裁剪

img = cv2.imread("resources/car.png")
// (430, 690, 3) (h, w, 3)
print(img.shape)

// 正常裁剪,输入的是(h, w) !!!
imgCropped = img[50:350, 200:500]

cv2.imshow("Image", img)
cv2.imshow("Image Cropped", imgCropped)
cv2.waitKey(0)

效果
在这里插入图片描述

11.图片颜色变换

//创建一张全零的图片,每个像素的值范围是[0, 255]
img = np.zeros((512, 512, 3), np.uint8)
//设置每个像素的三通道值为255,0,0 (B R G)
img[:] = 255, 0, 0

cv2.imshow("Image", img)

cv2.waitKey(0)

效果
在这里插入图片描述

12.图片上加线条

//这是一张全黑图片,像素值0代表black
img = np.zeros((512, 512, 3), np.uint8)
//设置被覆盖的图片,线的起点(w, h),终点(w, h) !!!,颜色,宽度 
cv2.line(img, (0, 0), (300, 300), (0, 255, 0), thickness=3)

cv2.imshow("Image", img)

cv2.waitKey(0)

效果
在这里插入图片描述

13.图片上加矩形框

img = np.zeros((512, 512, 3), np.uin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值