vrep中视觉传感器(Vision sensor)

        Vision sensors分为正交投影型(Orthographic projection-type)和透视投影型(Perspective projection-type),视场形状如下:

一、相关参数说明

1)Enable all vision sensors:打开和关闭所有Vision Sensor功能

2)Explicit handling:指示是否应显式处理传感器。如果选中此选项,则仅当调用sim.handleVisionSensor(sim.handle_all)或sim.handleVisionSensor(visionSensorHandle)时,才会处理传感器。如果用户希望在子脚本中而不是在主脚本中处理传感器,这将很有用(如果未选中,则在主脚本中调用sim.handleVisionSensor(sim.handle_all_except_explicit)时,传感器将被处理两次,并且在子脚本中调用sim.handleVisionSensor(visionSensorHandle)时一次。另请参阅有关显式和非显式调用的部分

3)External input:外部输入,选择后,视觉传感器的正常操作将被更改,从而能够处理外部图像(例如视频图像)

4)Perspective mode:允许在透视投影类型和正交投影类型视觉传感器之间进行选择

5)Ignore RGB info (faster):如果选中该选项,则将忽略传感器的RGB信息(即颜色),以便其更快地运行。如果仅依赖传感器的深度信息,请使用此选项

6)Ignore depth info (faster):如果选择此选项,则传感器的深度信息将被忽略,从而可以更快地运行。如果您不想使用传感器的深度信息,请使用此选项

7)Packet1 is blank (faster):如果选中,则CoppeliaSim不会自动从获取的图像中提取特定信息,因此可以更快地运行。如果您不打算使用API​​函数sim.readVisionSensor或sim.handleVisionSensor返回的第一个辅助值数据包,请使用此选项

8)Use local lights:如果启用,则在显示该视觉传感器的图像内容时,仅激活与该视觉传感器关联的局部光源(即,内置在此视觉传感器之上)。Lights可以在灯光属性中本地化。

9)Show fog if enabled:如果禁用,则启用雾后此视觉传感器将看不到任何雾

10)Render mode(渲染模式)

OpenGL (default):渲染对象的可见颜色通道,默认选项

OpenGL, auxiliary channels:渲染对象的辅助颜色通道。辅助通道红色,绿色和蓝色应按以下方式使用:红色是温度通道(环境温度为0.5),绿色是用户定义的通道,蓝色是活动的发光器通道

OpenGL, color coded handles:通过将对象的句柄编码为颜色来渲染对象。sim.readVisionSensor或sim.handleVisionSensor API函数返回的第一个数据包代表检测到的对象句柄(将值四舍五入)

POV-Ray:使用POV-Ray插件渲染图像,从而允许阴影(也包括柔和阴影)和材质效果(慢得多)

External renderer:使用通过插件实现的外部渲染器

External renderer, windowed:使用通过插件实现的外部渲染器,并在外部窗口中显示图像(仅在模拟过程中)

OpenGL3:使用OpenGL3渲染器插件,由Stephen James提供。该插件提供了CoppeliaSim中本来无法实现的阴影投射。可以通过对象的扩展字符串(例如openGL3 {lightProjection {nearPlane {0.1} farPlane {10} orthoSize {8} bias {0.001} normalBias {0.005} shadowTextureSize {2048}})针对每种光调整光投射和阴影

OpenGL3, windowed:与上面相同,但带窗口

11)Near / far clipping plane:传感器将能够检测到的最小/最大距离

12)Perspective angle:当传感器处于透视模式时,检测体积的最大打开角度

13)Orthographic size:传感器不在透视模式下时检测体积的最大尺寸(沿x或y)

14)Resolution X / Y:视觉传感器捕获的图像所需的x/y分辨率

15)Adjust default image color: 允许指定在未渲染任何内容的区域中应使用的颜色。默认情况下,将使用环境雾颜色。

二、应用

        在场景中增加一个Perspective type类型的视觉传感器,并设置好相关属性参数,在环境中点add/Floating view,并右击该窗口,点view,关联增加的视觉传感器,此时仿真便可以看到视觉传感器的图像。

三、python获取视觉传感器数据

  1. 获取传感器句柄。errorCode, visionSensorHandle = vrep.simxGetObjectHandle (clientID, 'Vision_sensor', vrep.simx_opmode_oneshot_wait)
  2. 获取视觉传感器的数据。errprCode, resolution, image = vrep.simxGetVisionSensorImage (clientID, visionSensorHandle, 0,vrep.simx_opmode_buffer)

Resolution存放原图片的像素,image中存放具体的数据信息

  1. 图像格式转换
sensorImage = []

sensorImage = np.array(image, dtype=np.uint8)

sensorImage.resize([resolution[0], resolution[1], 3])
  1. 可以加循环,重复读取,便可以获得动态视频,循环在第二次调用vrep.simxGetVisionSensorImage时加,后面改为使用opencv对数据图像读取。mpl.show()带有阻塞,只能显示一张图片。

四、相关代码:

#!/usr/bin/env python
# encoding: utf-8

import vrep
import sys
import numpy as np
import math
import matplotlib.pyplot as mpl
import time
import cv2

class Usage(Exception):
    def __init__(self, msg):
        self.msg = msg

def main(argv=None):
    if argv is None:
        argv = sys.argv

    # Python connect to the V-REP client
    vrep.simxFinish(-1)
    clientID = vrep.simxStart('127.0.0.1', 19997, True, True, 5000, 5)
    if clientID != -1:
        print("Connected to remote API server")
    else:
        print("Connection not successful")
        sys.exit("Connected failed,program ended!")

    # Get the handle of vision sensor
    errorCode, visionSensorHandle = vrep.simxGetObjectHandle(clientID, 'Vision_sensor', vrep.simx_opmode_oneshot_wait)
    # Get the image of vision sensor
    errprCode, resolution, image = vrep.simxGetVisionSensorImage(clientID, visionSensorHandle, 0,
                                                                 vrep.simx_opmode_streaming)
    time.sleep(0.5)
    while True:
        errprCode, resolution, image = vrep.simxGetVisionSensorImage(clientID, visionSensorHandle, 0,
                                                                 vrep.simx_opmode_buffer)
    #print(image)
    # Process the image to the format (64,64,3)
        sensorImage = []
        sensorImage = np.array(image, dtype=np.uint8)

        sensorImage.resize([resolution[0], resolution[1], 3])
        print(sensorImage.shape)
    # Use matplotlib.imshow to show the image
        sensorImage=cv2.flip(sensorImage, 0)
        cv2.imshow('image',sensorImage)
        cv2.waitKey(1)
    #mpl.show()cv2.imshow('tracking', image)

if __name__ == "__main__":
    sys.exit(main())

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LabVIEW是一种功能强大的图形化编程环境,用于设计和开发各种应用程序。其之一是LabVIEW Vision,它是用于图像处理和计算机视觉的工具包。 LabVIEW Vision提供了一系列功能强大且易于使用的工具和函数,用于处理和分析图像。它可以帮助用户完成诸如图像采集、图像处理、特征提取、目标检测和跟踪等任务。通过使用LabVIEW Vision,用户可以轻松地解决各种与图像相关的问题。 LabVIEW Vision包含多个模块,包括图像预处理、特征提取、目标检测和测量。用户可以根据自己的需求选择使用哪些模块,并根据需要自定义其参数。例如,用户可以使用图像预处理模块来调整图像的亮度和对比度,以便更好地进行后续处理。 LabVIEW Vision还提供了一些先进的功能,例如模式匹配和目标跟踪。通过使用这些功能,用户可以快速而准确地检测和追踪感兴趣的目标。例如,在一个制造厂,LabVIEW Vision可以用于自动检测产品上的缺陷并跟踪其位置。 对于初学者,LabVIEW Vision提供了一系列的教程和示例,帮助他们快速入门并掌握相关技术。这些教程包括基本的图像处理技术、模式匹配和目标跟踪等内容。通过参考这些教程和示例,用户可以逐步掌握LabVIEW Vision的应用。 总而言之,LabVIEW Vision是一个功能强大且易于使用的图像处理和计算机视觉工具包。无论是初学者还是专业人士,都可以通过使用LabVIEW Vision来解决各种与图像相关的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小蜗牛,大大梦想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值