我正在通过成像源使用相机 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 = 0,088 的曝光,大约为 1/11 秒。相反,相机的曝光设置为 2 次方 -3。
我真的需要能够更精确地设置我的相机的曝光,我知道这是可能的,因为当我使用成像源免费提供的IC捕获软件时,我可以将相机曝光设置为1 / 11秒轻松。
我确实尝试使用来自 github 的一些代码,也由图像源提供,允许直接与相机对话。并在一个论坛上找到了其他代码,看起来非常好,可以回答我的问题:
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”(或其依赖项之一)。尝试使用带有构造函数语法的完整路径。
但我没有在互联网上找到这条完整的路径。
(我没有在这里包含代码,因为它真的很长,这里是链接:
我希望一切都清楚^^'如果需要,我随时可以提供更多的上下文或精确度,并愿意接受您可能有的任何建议!
希望你拥有美好的一天 !