一步一步学OAK之二: RGB相机控制

这篇具有很好参考价值的文章主要介绍了一步一步学OAK之二: RGB相机控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天我们来实现 RGB相机的控制程序,用来控制彩色相机的曝光、灵敏度、白平衡、亮度/色度降噪、 设备端裁剪、相机触发器等。

Setup 1: 创建文件

  • 创建新建2-rgb-camera-control文件夹
  • 用vscode打开该文件夹
  • 新建一个main.py 文件

Setup 2: 安装依赖

安装依赖前需要先创建和激活虚拟环境,我这里已经创建了虚拟环境OAKenv,在终端中输入cd…退回到OAKenv的根目录,输入 OAKenv\Scripts\activate激活虚拟环境

安装pip依赖项:

pip install numpy opencv-python depthai blobconverter --user

Setup 3: 导入需要的包

在main.py中导入项目需要的包

import depthai as dai
import cv2
from itertools import cycle

from itertools import cycle 导入了cycle函数,这是Python中itertools模块中的一个函数。cycle函数用于创建一个无限迭代器,可以循环遍历特定的序列。

Setup 4: 全局变量

# 设置 size('W','A','S','D' controls)
STEP_SIZE = 8
# 手动曝光/聚焦/白平衡设置步骤
EXP_STEP = 500 #us
ISO_STEP = 50
LENS_STEP = 3
WB_STEP = 200
  • STEP_SIZE = 8 定义步长为8。这表示在进行控制时,每次变化的单位大小为8。

  • EXP_STEP = 500 定义手动曝光的步长为500微秒(us)。这表示在手动调整曝光时,每次增加或减小的曝光时间的单位大小为500微秒。

  • ISO_STEP = 50 定义ISO值的步长为50。这表示在手动调整ISO值时,每次增加或减小的单位大小为50。

  • LENS_STEP = 3 定义镜头聚焦的步长为3。这表示在手动调整镜头聚焦时,每次增加或减小的单位大小为3。

  • WB_STEP = 200 定义白平衡的步长为200。这表示在手动调整白平衡时,每次增加或减小的单位大小为200。

Setup 5: 定义clamp函数

def clamp(num,v0,v1):
    return max(v0,min(num,v1))

这个clamp函数用于将输入的值限制在指定的范围内。

  • num是要进行限制的值。
  • v0是允许的最小值。
  • v1是允许的最大值。

函数的作用是检查给定的值num是否在范围[v0, v1]内。如果它小于最小值v0,则返回v0作为结果;如果它大于最大值v1,则返回v1作为结果;否则,返回num本身。

这个函数可以用于确保某个值在指定的范围内。例如,如果希望将变量x限制在0和100之间,可以使用x = clamp(x, 0, 100)来确保x的值不会小于0或大于100。

Setup 6: 创建pipeline

pipeline = dai.Pipeline()

Setup 7: 创建节点

camRgb = pipeline.create(dai.node.ColorCamera)
camRgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)
camRgb.setIspScale(2,3) # 1080p --> 720p
stillEncoder = pipeline.create(dai.node.VideoEncoder)

这里创建了两个节点,并为其中的ColorCamera节点进行了一些配置。

通过pipeline.create()函数创建了一个名为camRgbColorCamera节点。

使用camRgb.setResolution()方法设置了相机的分辨率为1080p,即1920x1080像素。

使用camRgb.setIspScale()方法将图像缩小,将1080p的分辨率缩放为720p的分辨率。这里指定的缩放因子为2和3,表示将水平和垂直方向的分辨率都缩小为原来的2/3。因此,从1080p缩放到720p会使图像的宽度缩小为原来的2/3,高度缩小为原来的2/3。

使用pipeline.create()函数创建了一个名为stillEncoderVideoEncoder节点。

这段代码的主要目的是创建相机节点并对其进行初始化和配置,以便后续在管道中使用这些节点。

controlIn = pipeline.create(dai.node.XLinkIn)
configIn = pipeline.create(dai.node.XLinkIn)
ispOut = pipeline.create(dai.node.XLinkOut)
videoOut = pipeline.create(dai.node.XLinkOut)
stillMjpegOut = pipeline.create(dai.node.XLinkOut)

这段代码创建了四个节点,并为每个节点分配了一个名称。

使用pipeline.create()函数创建文章来源地址https://www.toymoban.com/news/detail-509019.html

到了这里,关于一步一步学OAK之二: RGB相机控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 一步一步学OAK之五:通过OAK相机实现边缘检测

    边缘检测是计算机视觉和图像处理中的一种基本技术,用于识别图像中物体和图像中不同区域之间的边界或轮廓。边缘是图像中具有明显灰度或强度变化的区域,通常表示不同物体、纹理或形状之间的边界。 边缘检测算法通过分析图像中像素的灰度值或强度变化情况,以找到

    2024年02月12日
    浏览(44)
  • 一步一步学OAK之六:通过OAK相机实现特征检测

    特征检测是指在数字图像中自动寻找并定位具有特定特征的图像区域或图像点。这些特征可以是在图像中具有独特外观、结构或统计特性的对象、边缘、角点、纹理等。 特征检测在计算机视觉中起到至关重要的作用,它是许多计算机视觉任务的基础,如目标检测、跟踪、姿态

    2024年02月11日
    浏览(49)
  • 零基础无实物一步一步学PLCS7-1200仿真(五)-四路简易抢答器控制

    本次项目为四路抢答器,通过本次项目了解项目开发流程,未来扩展多路抢答器只需要对程序进行微调即可。 项目要求: 1 .有 4 组进行抢答,抢答按钮为 SB1 ~ SB4 ,对应 4 个抢答指示灯为 L1 ~ L4 。 2 .主持人按钮为 SB0 ,主持人按下 SB0 ,所有指示灯复位。 3 .最先按下

    2024年02月07日
    浏览(41)
  • 零基础无实物一步一步学PLCS7-1200仿真(八)-按键控制数码管显示

    项目要求:按照项目的功能完成按键控制数码管的技术显示。 项目目的:学习比较指令、数学函数指令和加减计数指令和数码管的显示原理。 项目功能:数码管可以显示两位数00-99,然后可通过四个按键完成数码管的技术显示。其中四个按键功能如下:ESC按键为取消按钮,按

    2024年02月05日
    浏览(44)
  • 零基础无实物一步一步学PLCS7-1200仿真(三)-电动机正反转控制(互锁)

     在学习完电动机的启保停控制后,我们今天来学习电气控制里面进阶的正反转控制,也就是大名鼎鼎的互锁电路。首先需要了解电动机可以实现电动机正反转的工作原理。 一、硬件电路 用S7-1200 PLC控制一台三相异步电动机,实现对电动机进行的正反转控制。通过学习本任务

    2024年02月06日
    浏览(49)
  • 零基础无实物一步一步学PLCS7-1200仿真(九)-八位流水灯/跑马灯

    项目要求:按键配合实现8位LED的流水灯/跑马灯功能。 项目目的:学习移位和循环的指令。 项目功能:设置启动、停止按钮和8个圆形的LED灯。按下启动按钮后,8个LED灯按照流水灯或者跑马灯的规则循环显示。按下停止按钮后,显示停止。循环显示的LED灯可以是单个流水灯,

    2024年02月02日
    浏览(46)
  • 零基础无实物一步一步学PLCS7-1200仿真(七)-led灯闪烁-定时器或系统时钟

    本项目是点亮一个LED指示灯,点亮LED灯是任何控制器最开始入门最重要的一个项目。本例至今才开始讲这个项目是因为PLC的优势是直接对照电路图生成PLC程序,之前提到的电机自锁和互锁电路都是PLC程序与电路图一模一样。但是毕竟我们未来要开发复杂的工程需要学习更多的

    2024年02月04日
    浏览(53)
  • 一步一步学习 Stable Diffusion

    网上看了很多 Stable Diffusion 的视频,还有一些网站的资料之后,决定自己整理一份一步一步学习 Stable Diffusion 的学习资料。 请参照 Windows 11 本地部署 Stable Diffusion web UI 或者 Windows 11 上从零开始基于 wsl-ubuntu 搭建 AI 学习环境及部署多种私有 ChatGPT 进行部署。 访问 Extensions =

    2024年02月09日
    浏览(71)
  • 算法是如何一步一步优化的?

    英雄算法联盟 - 七月集训 已经开始 6 天,八月算法集训 将于 08月01日 正式开始,目前已经提前开始报名,报名方式参见(八月算法集训报名),想要参加的同学,建议提早报名,因为对于算法零基础的同学,会有一些提前的准备工作,比如需要 1 - 5 天的时间完成预训练 和

    2024年02月12日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包