首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过Python控制USB Thorlabs摄像机

通过Python控制USB Thorlabs摄像机
EN

Stack Overflow用户
提问于 2020-11-01 11:11:30
回答 2查看 2.1K关注 0票数 0

有几个主题,但其中许多是非常古老的,没有提供真正的解决方案(或没有一个对我来说是肯定的)。

我正在尝试各种库来让Python读取我的USB (DCC1545M)的帧,它们都有不同的模块或DLL导入错误。我在尝试工具,Thorcam,py-harware,微管理器.

具体来说,我很想让它与OpenCV一起工作,因为您以后可以在图像上使用所有有用的计算机视觉功能,我不确定您是否可以使用其他库。

然而,我遇到了和其他人一样的问题,因为openCV一开始就不能读取USB摄像头。

代码语言:javascript
运行
复制
cap = cv2.VideoCapture(1)              ## tried difference indices
  
cap.isOpened()                        ## returns FALSE
img_counter = 0
   
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

while True: 
    ret,frame = cap.read()                     ## returned frame is empty 
    cv2.imshow('preview',frame)
    k = cv2.waitKey(1)
    if k%256==32: # if SPACE is pressed, take image 
        img_name = 'frame_number_{}.png'.format(img_counter)
        cv2.imwrite(img_name,frame)
        print('frame taken ')
        img_counter += 1

cap.release()
cv2.destroyAllWindows()

我已经安装了来自Thorlabs网站的驱动程序,我也安装了uc480_64.dll。使用仪器()库成功地定位了相机:

代码语言:javascript
运行
复制
from instrumental import list_instruments, instrument
from ctypes import *

paramsets = list_instruments() ## camera found
print(paramsets)

回传

[]

我想知道是否有人知道在过去的几年中,openCV是否找到了一种读取USB摄像头的方法,如果是的话,是怎么回事?或任何其他可靠的方法,该方法允许对捕获的帧进行进一步的图像处理。

PS:我在超级用户上发布了这个,因为很明显,在堆栈溢出时,硬件问题是不允许的,但是suoeruser将它迁移回了这里。所以如果这也不是话题的话,我很抱歉。

EN

回答 2

Stack Overflow用户

发布于 2021-10-31 18:26:03

你能和相机通讯吗?它是它的本地软件吗?https://www.thorlabs.com/software_pages/ViewSoftwarePage.cfm?Code=ThorCam

我们的实验室正在使用"pylablib摄像机控制“来与各种摄像机(包括Thorlabs )进行通信:https://pylablib-cam-control.readthedocs.io/en/latest/

或者,如果您想编写自己的代码,pylablib包含一个用于Thorlabs摄像头的类(实际上已经用特定的摄像机进行了测试)。https://pylablib.readthedocs.io/en/latest/devices/uc480.html#cameras-uc480

票数 0
EN

Stack Overflow用户

发布于 2021-12-21 11:37:11

试试下面的代码。它适用于我的Thorlab DCx相机:

代码语言:javascript
运行
复制
import cv2
import numpy as np
from instrumental.drivers.cameras import uc480

# init camera
instruments = uc480.list_instruments()
cam = uc480.UC480_Camera(instruments[0])

# params
cam.start_live_video(framerate = "10Hz")

while cam.is_open:
     
     frame = cam.grab_image(timeout='100s', copy=True, exposure_time='10ms')
     
     frame1 = np.stack((frame,) * 3,-1) #make frame as 1 channel image
     frame1 = frame1.astype(np.uint8)

     gray = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)

     #now u can apply opencv features

     cv2.imshow('Camera', gray)
     
     if cv2.waitKey(30) & 0xFF == ord('q'):
        break

cam.close()
cv2.destroyAllWindows()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64631347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档