COI实验室技能:python控制相机的方法——采集、处理、显示、实时

这篇具有很好参考价值的文章主要介绍了COI实验室技能:python控制相机的方法——采集、处理、显示、实时。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

COI实验室技能:python控制相机的方法——采集、处理、显示、实时

  本文介绍如何利用python控制办公摄像头、工业相机和科研相机。将数据采集和处理统一到python代码中。
  主要围绕解决采用什么库、掌握这个库的控制相机方法(参数配置、读取数据等等)、结合自己的算法进行处理、保存显示结果。
  基本流程:导入相关的库 -> 读取图片的方法 -> 处理数据 -> 结果保存、显示等等。

python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机

预备内容:
● 掌握python语言以及安装加载包的方法(cv2)
● pointgray官网SDK及Python库:https://meta.box.lenovo.com/v/link/view/a1995795ffba47dbbe45771477319cc3
● PCO相机介绍python控制方法:https://www.pco.cn/software/third-party-software/python/

1. python控制办公摄像头

   使用cv2库可以直接控制家用摄像头(usb连接主机后,可以直接用电脑自带相机软件打开),读取的图像是numpy数组。具体实现方法如下:

# 实时在线测试家用摄像头
# 流程:读取图像 -> 预处理 -> 实时显示

import cv2
import time
import numpy as np

# 初始化
cv2.destroyAllWindows(), time.sleep(0.003)  # 清空cv2显示的窗口
# gap = (np.ones([448, 20], dtype=np.float32)*65535).astype(np.uint16)
cap = cv2.VideoCapture(0)		# 指定相机
one = np.ones([480, 640, 3], dtype=np.uint8)*255	# 本demo的需求,用于计算1-img的结果,实现图像色彩负片

while True:
    start = time.time()	# 记录开始时间
    # 读取图像
    ret, frame = cap.read()	# 读取为numpy数组
    # 预处理
    frame_1 = one - frame
    # 显示图像
    cv2.imshow('frame', np.concatenate([frame, frame_1], axis=1))	# 并排显示原图和处理后的图像
    if cv2.waitKey(1) == 27:    # 按下ESC键退出
        break
    # 打印帧率
    print('帧率:{:.4f} fps'.format(1.0/(time.time()-start)))

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

运行结果:
python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机
图1 家用相机的python控制运行结果

2. python控制工业相机的例子

  这一节以工业相机pointgray为例,介绍python如何控制pointgray相机。
  控制工业相机笔者测试了很多办法(cv2.VideoCapture(0),pyflycap2,PyCapture2),很多方法都不行,最后成功运行的是用官网提供的相关资料,pointgray官网SDK及Python库:https://meta.box.lenovo.com/v/link/view/a1995795ffba47dbbe45771477319cc3,下面下载的压缩包中有readme文件,它也详细讲述了安装步骤。

2.1 环境配置

  装包流程:下载应用程序和python库 -> 进行安装 -> 运行demo程序 -> 进行自己的开发。

1)从官网中下载对应的SpinnakerSDK应用程序(笔者是64位电脑,就安装了x64的包),下载完之后进行安装(默认形式安装即可),装完之后打开应用程序,应用程序在安装路径的bin文件夹下,如何可以用软件打开相机,说明连接上没有问题,准备下一步;
python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机
软件成功打开相机,并能够控制相机;
python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机
2)下载python版本的压缩包,如下图,进入到python文件夹中,下载对应电脑系统和python版本的压缩包;
python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机
3)随便解压到一个文件夹,打开文件夹,复制.whl文件到cmd的默认路径(一般是C:\user\xxx),使用pip install xxx.whl进行安装。
python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机
安装完之后,可以在命令行中输入pip list来检查pyspin包是否安装好了:
python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机
安装成功之后就可以使用这个库对相机进行控制了。

2.2 控制pointgray相机

  因为安装好的库是小写的,官网给的代码示例都是大写的,直接导入PySpin会出错,因此这里需要到入库名称为pyspin。

# 使用PySpin控制pointgray相机

import cv2
import numpy as np
import pyspin as PySpin

# 初始化
system = PySpin.System.GetInstance()    # 创建系统对象
cam_list = system.GetCameras()          # 获取相机列表
cam = cam_list.GetByIndex(0)            # 选择要使用的相机
cam.Init()
cam.AcquisitionMode.SetValue(PySpin.AcquisitionMode_Continuous) # 采集模式为连续采集
cam.BeginAcquisition()                  # 开始采集

# 循环
while True:
    # 读取图像
    image_result = cam.GetNextImage(1000)
    img = image_result.GetNDArray()         # 转为numpy数组
    # 显示图像
    n, m = (int(img.shape[0]/3), int(img.shape[1]/3))   # 缩小尺寸
    img_resize = cv2.resize(img, (m, n))                # 缩小后的图像
    cv2.imshow('frame', np.concatenate([img_resize, 255-img_resize], axis=1))  # 并排显示原图和处理后的图像
    # 按下 'q' 键退出循环
    if cv2.waitKey(1) == ord('q'):
        break

# 停止采集
cam.EndAcquisition()
# 关闭相机
cam.DeInit()
# 释放系统资源
del cam
del cam_list
system.ReleaseInstance()
cv2.destroyAllWindows()

结果:
python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机

3. python控制科研相机

  以PCO相机为例,1) 使用pip install pco安装控制PCO相机所需要的库;2)使用库初始化相机参数和读取数据;3)进行后续自己的数据处理;
  PCO官网提供的说明文档也有非常具体的操作指南,读者可以下载下来进一步学习。
PCO相机介绍python控制方法:https://www.pco.cn/software/third-party-software/python/

import cv2
import pco

# 清空cv2显示的窗口
cv2.destroyAllWindows(), time.sleep(0.003)  

# 初始化相机
cam = pco.Camera()  # 指定相机
exp_time = 0.01
cam.set_exposure_time(exp_time)
cam.record(4, mode='ring buffer')  # 启动相机
cam.wait_for_first_image()

while True:
	img, meta = cam.image(image_number=0xFFFFFFFF)	# 读取为numpy数组
	# 执行数据处理
	# xxx

	# 显示图像
	cv2.imshow('frame', img)	# 并排显示原图和处理后的图像
	# 按下 'q' 键退出循环
    if cv2.waitKey(1) == ord('q'):
        break
# 释放资源
cv2.waitKey(-1)
cam.close()
cv2.destroyAllWindows()

如图是笔者实时运行一个去散射的结果:
python 控制佳能相机,计算光学成像COI实验室技能,python,开发语言,数码相机
如果有自动调节曝光时间的需求,可以在上面循环语句中的xxx位置放置下面这段代码:

if np.max(img[543:1438:2, 560:1455:2]) == 65535:    # 过曝了,缩小曝光时间
    exp_time = exp_time*55000/65535
    cam.set_exposure_time(exp_time)
    print('exp_time: ', exp_time)
elif np.max(img[543:1438:2, 560:1455:2]) > 50000:   # 最大像素值>50000, 无需调节
    pass
else:                                               # 最大像素值<50000, 增加曝光时间
    exp_time = exp_time*55000/np.max(img[543:1438:2, 560:1455:2])
    cam.set_exposure_time(exp_time)
    print('exp_time: ', exp_time)

自适应曝光的实现过程:利用图像的最大值分布在50000~65535之间的约束来调节曝光时间,首先计算采集图像的最大值I_max,执行判断:1)如果最大值等于65535(说明过曝),增益系数α=55000/65535,用exp_time = αexp_time来缩小曝光时间;2)如果最大值大于50000,略过;3)如果最大值小于50000,增益系数α=55000/I_max,用exp_time = αexp_time来增大曝光时间。说明:考虑到不同帧之间最大值会波动,所以用55000这个中间值来计算增益α,这样即使有波动,只要最大值大于50000,我们就不用更新曝光时间,从而在程序上只执行一行判断语句,对整体运行效率几乎没有影响。

4. 实时监测系统的实现

  采集完图片和处理之后,只要外部增加一个循环语句,就可以实现实时监测,实时看到自己算法的效果。

while True:
	img = cam.capture()	# 这行命名是示例,要根据具体的读取命令进行编写
	cv2.imshow('windows', img)
	# 按下 'q' 键退出循环
    if cv2.waitKey(1) == ord('q'):
        break

其他相关资料:
● matlab控制pointgray工业相机:https://www.flir.cn/support-center/iis/machine-vision/application-note/getting-started-with-matlab/
● matlab控制pco相机:https://blog.csdn.net/qq_34917728/article/details/121527862文章来源地址https://www.toymoban.com/news/detail-540300.html

到了这里,关于COI实验室技能:python控制相机的方法——采集、处理、显示、实时的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Django高校校园教室实验室房间预约管理系统设计与实现(Pycharm+Python+Mysql)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年03月18日
    浏览(95)
  • 智慧校园实验室安全综合管理平台如何保障实验室安全?

    一、建设思路 实验室安全综合管理平台是基于以实验室安全,用现代化管理思想与人工智能、大数据、互联网技术、物联网技术、云计算技术、人体感应技术、语音技术、生物识别技术、手机APP、自动化仪器分析技术有机结合,通过建立以实验室为中心的管理体系,从人员、

    2024年01月20日
    浏览(81)
  • 基于VR技术的新型实验室教学模式——VR线上生物实验室

    随着科技的发展,虚拟现实技术已经逐渐走进了我们的生活。在教育领域中,虚拟现实技术也被广泛应用于各种学科的教学中。其中,VR线上生物实验室是广州华锐互动开发的,一种基于VR技术的新型教学模式,它能够为学生提供更加真实、生动的实验体验,同时也能够更好地

    2024年02月14日
    浏览(61)
  • 实验室安全

    [判断题] 基于安全考虑,每个实验房间每天最后一个离开的同学必须确保进行断电处理【4分】 正确答案:B 解析:暂无解析 [判断题] 实验用电烙铁应有专门搁架,用毕立即切断电源【4分】 正确答案:A 解析:暂无解析 [判断题] 集中供气是解决实验室存放过多气瓶的有效途径

    2024年02月08日
    浏览(66)
  • 新知实验室

    TUIRoom 是一个包含 UI 的开源音视频组件,通过集成 TUIRoom,可以在业务中快速上线音视频房间,屏幕分享,聊天等功能。 项目是开源的项目,根据自己 的需求设计项目。 创建步骤如下 : 一、  开通腾讯云实时音视频及即时通信服务 TUIRoom 基于腾讯云实时音视频和即时通信服

    2024年02月03日
    浏览(61)
  • 实验室安全考试

    1、[判断题] 火灾对实验室构成的威胁最为严重,最为直接。应加强对火灾三要素(易燃物、助燃物、点火源)的控制。 (分值1.0) 你的答案: 正确 2、[判断题] 50毫安的工频电流就可以使人遭到致命电击。 (分值1.0) 你的答案: 正确 3、[判断题] 用电安全的基本要素有:电

    2024年02月06日
    浏览(73)
  • 决策树(实验室会议小记)

    特征过多导致过拟合、有一些特征是噪音。 1、 尝试所有组合:也是全局最优 2、贪心算法:每次决策都是基于当前情况去寻找最优解。计算过程:把特征加进去→是否更优?→是:加入模型/否:淘汰 3、L1正则:目标函数为损失函数;特点:具有稀疏性 4、决策树:节点代表

    2024年02月08日
    浏览(63)
  • 【新知实验室】TRTC腾讯实时音视频动手实验

    https://cloud.tencent.com/document/product/647/16788 应用 TRTC 通过应用的形式来管理不同的业务或项目。您可以在 TRTC 控制台 给不同的业务或项目分别创建不同的应用,从而实现业务或项目数据的隔离。每个腾讯云账号最多可以创建100个 TRTC 应用。 SDKAppID SDKAppID(应用标识/应用 ID)是腾

    2024年02月01日
    浏览(53)
  • 新知实验室-TRTC如此简单

    腾讯实时音视频(Tencent Real-Time Communication,TRTC),将腾讯多年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。 1、多人音

    2023年04月27日
    浏览(95)
  • 网络安全实验室2.基础关

    url:http://lab1.xseclab.com/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php 查看网页源代码的方式有4种,分别是:1、鼠标右击会看到”查看源代码“,这个网页的源代码就出现在你眼前了;2、可以使用快捷Ctrl+U来查看源码;3、在地址栏前面加上view-source,如view-source:https://www.baidu.com ;

    2023年04月17日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包