我使用的是成像源TIS DMK 33GR0134相机。我在Win32上使用Python 3.8.10编写代码。我的目标是创建一个图形界面,使用户能够控制相机。因此,我需要用Python控制这个摄像头。我知道我可以使用openCV控制此相机的曝光,这得益于:
self.capture = cv2.VideoCapture(1)
self.capture.set(cv2.CAP_PROP_EXPOSURE, -3)
在这里,我将相机曝光设置为2倍-3=1/8秒
但是,当我编写代码时:
self.capture = cv2.VideoCapture(1)
self.capture.set(cv2.CAP_PROP_EXPOSURE, -3.5)
这应与2次方-3.5=0088的曝光相对应,约为1/11秒。取而代之的是,相机的曝光设置为2次方-3
我真的需要能够以更高的精度设置相机的曝光,我知道这是可能的,因为当我使用成像源免费提供的IC捕获软件时,我可以轻松地将相机曝光设置为1/11秒
我确实尝试过使用github的一些代码,这些代码也是由imaging source提供的,允许直接与相机对话。在一个论坛上发现了另一个代码,它看起来非常好,可以回答我的问题:
import ctypes as C
import tisgrabber as IC
import cv2
import numpy as np
import matplotlib.pyplot as plt
Camera = IC.TIS_CAM()
Devices = Camera.GetDevices()
for i in range(len( Devices )):
print( str(i) + " : " + str(Devices[i]))
Camera.open("DMK 33UX183 16910441")
Camera.SetVideoFormat('Y16 (5472x3648)')
Camera.SetFormat(IC.SinkFormats.Y16)
Camera.StartLive(0)
Camera.SetPropertySwitch("Exposure","Auto",0)
Camera.SetPropertyAbsoluteValue("Exposure","Value",2)
ExposureTime=[0]
Camera.GetPropertyAbsoluteValue("Exposure","Value",ExposureTime)
print("Exposure time abs: ", ExposureTime[0])
Gainauto=[0]
Camera.GetPropertySwitch("Gain","Auto",Gainauto)
Camera.SetPropertySwitch("Gain","Auto",0)
Camera.SetPropertyValue("Gain","Value",0)
Camera.SnapImage()
image = Camera.GetImageEx()
image = cv2.flip(image,0)
image = cv2.erode(image,np.ones((11, 11)))
image=np.right_shift(image,4)
此处链接到论坛:https://github.com/TheImagingSource/IC-Imaging-Control-Samples/issues/6
但是,我使用的tisgrabber
在运行时返回以下错误:找不到模块“tisgrabber_x64.dll”(或其依赖项之一)。尝试使用构造函数语法的完整路径
但我没有在互联网上找到完整的路径
(我没有在这里包含代码,因为它确实非常庞大,这里是链接:
我希望一切都清楚 如果需要,我随时可以提供更多的上下文或精确性,并愿意接受您可能提出的任何建议
希望你有一个愉快的一天
目前没有回答
相关问题 更多 >
编程相关推荐