Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2.1 数字图像处理基础

什么是数字图像?

数字图像是由像素组成的二维矩阵,每个像素包含颜色信息。在我们的项目中,摄像头捕获的图像是640×480分辨率,即由307,200个像素点组成。

像素表示

  • RGB格式:每个像素由红(Red)、绿(Green)、蓝(Blue)三个分量组成,每个分量取值范围0-255
  • BGR格式:OpenCV默认使用BGR顺序而非RGB
  • 灰度图:单通道图像,每个像素只有一个亮度值(0-255)

项目中的图像获取与处理

在项目中,我们通过摄像头实时捕获图像帧进行处理:

# 在color_detect.py中
def test():
    # 创建颜色检测器实例
    # 参数: lower_hsv - HSV下限阈值, upper_hsv - HSV上限阈值, min_area - 最小识别区域面积
    dector = ColorDetector([30, 70, 80], [50, 255, 255], min_area=300)
    
    # 打开默认摄像头(USB摄像头)
    cap = cv2.VideoCapture(0)
    if not cap.isOpened():
        print("无法打开摄像头")
        exit()

    while True:
        # 读取一帧图像
        ret, frame = cap.read()
        
        if not ret:
            print("无法获取帧")
            break
        
        # 垂直翻转图像(根据摄像头安装方向)
        image = cv2.flip(frame, 0)
        
        # 处理当前帧
        processed_frame, mask, data = dector.process(image)
        
        # 显示原始图像和处理结果
        cv2.imshow("Camera Feed", image)
        cv2.imshow("Processed Frame", processed_frame)
        cv2.imshow("Mask", mask)
        
        # 检测按键输入
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    # 释放摄像头资源
    cap.release()
    cv2.destroyAllWindows()