python计算机视觉OpenCV入门讲解

  

Python计算机视觉OpenCV入门讲解攻略

OpenCV是一个强大的开源计算机视觉库,能够帮助开发者处理图像和视频数据,实现许多计算机视觉应用。下面让我们一步步深入学习Python计算机视觉OpenCV,

第一步:OpenCV安装

安装OpenCV之前,我们需要先安装Python。建议使用Python3。接下来我们可以采用pip安装OpenCV:

pip install opencv-python

安装成功后,我们可以使用以下代码测试OpenCV是否安装成功:

import cv2

print(cv2.__version__)

如果输出了版本号,则说明OpenCV已经成功安装并导入。

第二步:读取、显示和保存图像

在OpenCV中,我们可以读取图像文件,并将其显示在屏幕上。以下是一个基本代码示例:

import cv2

img = cv2.imread('test.jpg', 1)
cv2.imshow('image', img)

k = cv2.waitKey(0)
if k == 27:    # 等待ESC键按下
    cv2.destroyAllWindows()
elif k == ord('s'):   # 等待s键按下,保存图像并退出程序
    cv2.imwrite('saved_image.png', img)
    cv2.destroyAllWindows()

这个例子加载了一个名为“test.jpg”的图像文件,并显示在名为“image”的窗口中。程序将等待用户输入,并根据按键的不同来保存或关闭窗口。如果用户按下“s”键,则图像将作为新文件保存,并关闭窗口。

第三步:图像预处理

在OpenCV中,我们可以对图像进行各种处理。以下是一个基本代码示例:

import cv2

img = cv2.imread('test.jpg', 0)   # 以灰度图像方式加载图像
thresh_value = 127                # 阈值

# 将图像二值化
ret, thresh = cv2.threshold(img, thresh_value, 255, cv2.THRESH_BINARY)

# 显示原始图像和处理后的图像
cv2.imshow('original', img)
cv2.imshow('thresholded', thresh)

cv2.waitKey(0)       # 等待直到用户关闭窗口
cv2.destroyAllWindows()   # 关闭所有窗口

这个例子将使用灰度方式加载一个图像,然后将图像二值化,将颜色值小于阈值的像素设为0,其他像素设为255。最后,程序将显示原始图像和处理后的图像。

示例1: 人脸检测

以下是一个基本的示例,它使用OpenCV检测静态图像中的人脸:

import cv2

img = cv2.imread('test.jpg', 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)

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

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

这个例子读取一个图像文件,将其灰度化,并使用haar分类器检测人脸。程序将在图像中找到人脸,然后用红色矩形框住它们。

示例2: 实时视频处理

以下是一个实时视频处理的示例:

import cv2

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)

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

    cv2.imshow('video', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

这个例子打开计算机摄像头,并实时捕获视频帧。程序将每个帧转换为灰度图像,然后使用haar分类器检测人脸。程序将在图像中找到人脸,然后用红色矩形框住它们。使用者可以按下“q”键退出程序。

总之,OpenCV提供了各种工具,可以轻松地处理图像和视频数据。我们只需要遵循以上步骤,即可快速入门。

相关文章