OpenCV 是一个开源图像识别库。它用于机器学习、计算机视觉和图像处理。与 Numpy 和 Pandas 等强大的库集成时,您可以充分利用 OpenCV。

关注💵不迷路,每天🌈学习提升解锁🔑更多技能。关注微信公众号,查看图文教程。

公众号:计算机程序吧 - PYTHON 图像识别 - OPENCV

安装PYTHON 3.X

打开终端/命令提示符并输入:
~ pip install opencv-python

入门(如何阅读图像)

1.打开PyCharm。
2.导入cv2。
3.将测试图像粘贴到目录中。
4.使用函数创建变量来存储图像。5. 使用imshow()函数显示图像。6. 使用函数添加延迟。
imread()

waitkey()

1
2
3
4
5
6
import cv2
# LOAD AN IMAGE USING 'IMREAD'
img = cv2.imread("Resources/lena.png")
# DISPLAY
cv2.imshow("Lena Soderberg”, img)
cv2.waitKey(0)

使用 VIDEOCAPTURE() 函数播放视频

  1. 打开 PyCharm。

  2. 导入CV2.

  3. 将测试视频粘贴到目录中。

  4. 使用 VideoCapture() 函数创建变量来存储视频。

  5. 创建无限 while 循环以连续显示视频的每一帧。

  6. 使用 imshow() 函数显示视频。

  7. 使用 waitkey() 函数添加延迟。

1
2
3
4
5
6
7
8
9
import cv2
frameWidth = 640
frameHeight = 480
cap = cv2.VideoCapture("Resources/test_ video.mp4")
while True:
success, img = cap.read()
img = cv2.resize(img, (frameWidth, frameHeight))
cv2.imshow("Result", img)
break

从网络摄像头访问实时直播

  1. 打开 PyCharm。

  2. 导入CV2.

  3. 使用 VideoCapture() 函数创建变量来存储视频。

  4. 在 VideoCapture(0) 中传递参数 0 以访问网络摄像头。

  5. 创建无限 while 循环以连续显示网络摄像头视频的每一帧。

  6. 使用 imshow() 函数显示实时动态。

  7. 使用 waitKey(0) 添加无限延迟。

1
2
3
4
5
6
7
8
9
10
11
import cv2
Width = 640
Height = 480
cap = cv2.VideoCapture(0)
cap.set(3, frameWidth)
cap.set(4, frameHeight)
cap.set(10, 150)
while True:
success, img = cap.read()
cv2.imshow("Result", img)
break

OPENCV的功能

将图像转换为灰度

  1. 打开 PyCharm。

  2. 导入CV2.

  3. 使用函数创建变量来存储图像。imread()

  4. 要转换为灰度使用函数cv2.cvtColor()

  5. 传递参数图像位置并COLOR_BGR2GRAY进行转换。

1
2
3
4
5
import cv2
img = cv2.imread("Resources/lena.png")
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Image", imgGray)
cv2.waitKey(0)

边缘检测

  1. 打开 PyCharm。

  2. 导入CV2.

  3. 使用函数创建变量来存储图像。imread()

  4. 检测边缘使用功能cv2.Canny()

  5. 传递参数图像位置和阈值进行转换。

1
2
3
4
5
6
import cv2

img = cv2.imread("Resources/lena.png")
imgCanny = cv2.Canny(img, 150, 200)
cv2.imshow("Canny Image”, imgCanny)
cv2.waitKey(0)

裁剪图像

  1. 导入 numpy 和 cv2。

  2. 创建两个变量来存储图像的高度和宽度。

  3. 创建两个 numpy 数组来存储坐标。

  4. 第一个数组 – 存储要裁剪的图像的坐标。

  5. 第二个数组 – 存储完整图像的坐标。

  6. 使用 getPerspective() 和 wrapPerspective() 函数裁剪图像。

1
2
3
4
5
6
7
8
9
10
11
image = cv2.imread("Assets/cards.jpg")

width, height = 250, 350
point1 = np.float32([[111, 219], [287, 188], [154, 482], [352, 440]])
point2 = np.float32([[0, 0], [width, 0], [0, height], [width, height]])
matrix = cv2.getPerspectiveTransform(point1, point2)
Output = cv2.warpPerspective(image, matrix, (width, height))

cv2.imshow("Image”, image)
cv2.imshow("
Output”, Output)
cv2.waitKey(0)

人脸检测

PYTHON 图像识别 - OPENCV

  1. 打开 PyCharm。

  2. 导入CV2.
    3.创建一个变量来存储级联分类器(要了解有关级联分类器的更多信息,请单击此处。

  3. 使用函数将图像转换为灰度。cv2.cvtColor()

  4. 使用功能检测人脸。detectMultiscale()

  5. 在检测到的脸部周围绘制一个矩形。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import cv2

face_Cascade = cv2.CascadeClassifier("Resources/haarcascade_frontalface_default.xml")

image = cv2.imread('Resources/lena.png')
imgGray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

faces = face_Cascade.detectMultiScale(imgGray, 1.1, 4)

for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x + w, y + h), (255, 0, 0), 2)

cv2.imshow("Result", image)
cv2.waitKey(0)

学习更多编程技术,请关注微信公众号:计算机程序吧,感谢💯分享❎关注