程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

python摄像头编程

hfteth 2025-05-26 15:54:45 技术文章 7 ℃

在生产测试中,经常需远程进行调试,使用摄像头可以直观的看到现场的情况,有时摄像头位置不一定合适,使用下面的代码,可以裁剪需关心的部分,如果有角度问题,还可以进行旋转。用起来很方便。分享给大家。

程序中设置的几个参数是:

angle:旋转角度,单位为度

x,y,w,h:裁剪指定区域,x是左上角往裁剪顶水平数的像素值,y是左上角往裁剪顶垂直数的像素值,w是要显示图片的宽度像素,h是要显示图片的高度像素。如果这些值不能超出原始图片。

按"q"关闭窗口。

Bash
import cv2
import numpy as np

# 打开电脑前置摄像头
cap = cv2.VideoCapture(0)

# 创建窗口并命名
#cv2.namedWindow('Rotated Image')

# 旋转角度,单位为度
angle = 0

# 计算变换矩阵
rows, cols = cap.read()[1].shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), angle, 1)

# 循环读取摄像头数据
while True:
    ret, frame = cap.read()

    # 如果读取数据失败,则退出循环
    if not ret:
        break

    # 对图像进行旋转操作
    rotated_frame = cv2.warpAffine(frame, M, (cols, rows))


 # 裁剪指定区域
    x, y, w, h = 150, 70, 200, 140
    crop_frame = rotated_frame[y:y+h, x:x+w]

# 放大裁剪后的图像
    enlarged_frame = cv2.resize(crop_frame, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)

    # 显示裁剪后的图像
    cv2.imshow('Selected Region', enlarged_frame)
    # 显示旋转后的图像
    #cv2.imshow('Rotated Image', rotated_frame)

    # 获取键盘事件
    key = cv2.waitKey(1)

    # 如果是窗口关闭事件,则退出循环
    if key == ord('q') or key == 27:
        break

# 释放摄像头资源并关闭窗口
cap.release()
cv2.destroyAllWindows()
最近发表
标签列表