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)

    #展示彩色图像和灰度图像
    cv2.imshow('Color Image', frame)
    cv2.imshow('Gray Image', gray_frame)

    #在按到'q'后停止获取图像
    if cv2.waitKey(1) == ord('q'):
        break

#关闭摄像头
cap.release()
#关闭所有窗口
cv2.destroyAllWindows()

3.实验结果与分析

(1)结果:

成功实现了摄像头实时采集彩色图像并转换为灰度图像的功能。程序运行后弹出两个窗口,分别显示实时彩色图像和灰度图像,按'q'键可退出程序。

(2)分析:

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

(3)改进:

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

4.个人收获与体会

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

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

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

5.思考

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

更多推荐