Files
ailai_show/Vision/tool/CameraRVC.py
琉璃月光 eaa1cee17f 源码
2025-08-15 12:08:30 +08:00

150 lines
4.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project my_work
@File camera.py
@IDE PyCharm
@Author hjw
@Date 2024/8/13 11:34
'''
import PyRVC as RVC
import numpy as np
class camera_rvc:
def __init__(self):
self.caminit_isok = False
RVC.SystemInit()
# Choose RVC X Camera type (USB, GigE or All)
opt = RVC.SystemListDeviceTypeEnum.GigE
# Scan all RVC X Camera devices.
ret, devices = RVC.SystemListDevices(opt)
print("RVC X Camera devices number:%d" % len(devices))
# Find whether any RVC X Camera is connected or not.
if len(devices) == 0:
print("Can not find any RVC X Camera!")
RVC.SystemShutdown()
else:
print("devices size = %d" % len(devices))
# Create a RVC X Camera and choose use left side camera.
self.x = RVC.X1.Create(devices[0], RVC.CameraID_Left)
# x = RVC.X1.Create(devices[0], RVC.CameraID_Right)
# Test RVC X Camera is valid or not.
if self.x.IsValid() == True:
print("RVC X Camera is valid!")
# Open RVC X Camera.
ret1 = self.x.Open()
# Test RVC X Camera is opened or not.
if ret1 and self.x.IsOpen() == True:
print("RVC X Camera is opened!")
self.caminit_isok = True
else:
print("RVC X Camera is not opened!")
RVC.X1.Destroy(self.x)
RVC.SystemShutdown()
self.caminit_isok = False
else:
print("RVC X Camera is not valid!")
RVC.X1.Destroy(self.x)
RVC.SystemShutdown()
self.caminit_isok = False
def get_img(self):
""
'''
:param api: None
:return: ret ,img
'''
if self.caminit_isok == False:
return 0, None
else:
# Capture a point map and a image.
ret2 = self.x.Capture()
# Create saving address of image and point map.
if ret2 == True:
print("RVC X Camera capture successed!")
# Get image data and image size.
img = self.x.GetImage()
# Convert image to array and save it.
img = np.array(img, copy=False)
return 1, img
else:
print("RVC X Camera capture failed!")
self.x.Close()
RVC.X1.Destroy(self.x)
RVC.SystemShutdown()
return 0, None
def get_point_map(self):
""
'''
:param api: None
:return: img
'''
if self.caminit_isok == False:
return 0, None
else:
# Capture a point map and a image.
ret2 = self.x.Capture()
# Create saving address of image and point map.
if ret2 == True:
print("RVC X Camera capture successed!")
# Convert point map (m) to array and save it.
pm = np.array(self.x.GetPointMap(), copy=False)
return 1, pm
else:
print("RVC X Camera capture failed!")
self.x.Close()
RVC.X1.Destroy(self.x)
RVC.SystemShutdown()
return 0, None
def get_img_and_point_map(self):
""
'''
:param api: None
:return: ret , img, point_map
'''
if self.caminit_isok == False:
return 0, None, None
else:
# Capture a point map and a image.
ret2 = self.x.Capture()
# Create saving address of image and point map.
if ret2 == True:
print("RVC X Camera capture successed!")
# Get image data and image size.
img = self.x.GetImage()
# Convert image to array and save it.
img = np.array(img, copy=False)
# Convert point map (m) to array and save it.
pm = np.array(self.x.GetPointMap(), copy=False)
return 1, img, pm
else:
print("RVC X Camera capture failed!")
self.x.Close()
RVC.X1.Destroy(self.x)
RVC.SystemShutdown()
return 0, None, None
def release(self):
if self.caminit_isok == False:
RVC.SystemShutdown()
else:
RVC.X1.Destroy(self.x)
RVC.SystemShutdown()