1.实验目的及原理:

目的:

本次实验旨在通过Python的OpenCV库实现摄像头实时图像采集,并将采集到的彩色图像转换为灰度图像进行显示,掌握基本的图像采集、存储与显示。

技术方法:

利用OpenCV库中的VideoCapture进行摄像头图像采集,通过cvtColor函数将BGR格式的彩色图像转换为灰度图像,并利用imshow函数实时显示图像。

算法原理:

CVTColor函数转换成灰度图:Gray = 0.299×R + 0.587×G + 0.114×B

2.程序代码:

import cv2

# 打开摄像头
cap = cv2.VideoCapture(0)

# 判断打开是否成功
if not cap.isOpened():
    print("无法打开摄像头")
    exit()

while True:
    # 获取图像帧
    ret, frame = cap.read()
    if not ret:
        print("无法获取图像帧")
        break

    # 转换为灰度图像
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # 高斯滤波:去除低光噪点(ksize为滤波核大小,需为奇数;sigmaX为水平方向标准差)
    denoised_gray = cv2.GaussianBlur(gray_frame, ksize=(5, 5), sigmaX=1)

    # 直方图均衡化:提升灰度图对比度,增强细节
    enhanced_gray = cv2.equalizeHist(denoised_gray)

    # 展示原始彩色图、改进后灰度图(对比效果)
    cv2.imshow('Original Color Image', frame)
    cv2.imshow('Enhanced Gray Image (Denoised + Equalized)', enhanced_gray)

    # 按'q'退出
    if cv2.waitKey(1) == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

3.实验结果与分析

(1)结果:

成功实现了摄像头实时采集彩色图像并转换为灰度图像的功能。程序运行后弹出两个窗口,分别显示实时彩色图像和灰度图像,按'q'键可退出程序。(经过简单处理后明显感觉噪音点少了不少)

(2)分析:

还没经过其他的方式进行图片处理,灰度图像对比度较低,细节表现不如彩色图像明显,低光照条件下可能出现图像噪点。

(3)改进:

可以通过均衡化,滤波操作处理照片,来让照片更容易查看、使用。

4.个人收获与体会

1.掌握了OpenCV的基本使用方法,包括摄像头操作和图像转换。

2.学会了实时图像处理的基本框架和循环结构。

3.认识到实际图像处理中需要考虑光照、设备性能等现实因素。

5.思考

通过镜头采集到图像后可以进一步处理图像,让图像更方便使用。后续可以增加个按键后保存当前帧的图像的操作,方便处理与使用图像。

 

更多推荐