20220305CHUSEI双目摄像头windows驱动+python+openCV


1,环境:

win7 64位,

python3.8(anaconda),

opencv-python(pip install opencv-python)

pyusb(pip install pyusb)

 libusb(pip install libusb)

另外在windows下,必须安装 libusb-win32-devel-filter-1.2.6.0.exe。仅 解压缩 libusb-win32-bin-1.2.6.0.zip,并安装压缩包里的2个软件,install-filter-win.exe, inf-wizard.exe 是不可以的。 



2,硬件,

插入双目摄像头,到lenovo x220笔记本usb口


3,程序

程序使用方法:默认是右摄像头画面,按1是左面图,按2是右面图,按3是红蓝滤光片眼镜立体图,按4是双目立体图。下图是双目立体图。

# for硬件--CHUSEI 双目摄像头

# from  https://www.jianshu.com/p/2ce302d588a0, 原程序端口不对cv2.VideoCapture(0)   

# edit for linux and windows

import cv2

import usb.core

cam=cv2.VideoCapture(700)                              #  不一定是700,需要枚举法,暴力测试端口

dev = usb.core.find(idVendor=0x18e3, idProduct=0x5031)

dev.set_configuration()                              ####  去除这个语句也可以使用??

dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x50,0xff])  # simulate the SET_CUR sequence 

dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0xf6])

dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x25,0x00])

dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x5f,0xfe])

dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x03])

dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x02])

dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x12])

dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x04])

dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x76,0xc3])

k=0

while (k!=ord('q')):                                      #  按下q键后退出

    ret,frame=cam.read()

    cv2.imshow("1-left / 2-right(default) / 3-RB / 4-stero",frame)

    if k == ord('q'):

        break



    k=cv2.waitKey(18)&0xFF                              # 等待18毫秒,并非仅仅是等待键盘输入,是窗口显示的必要语句

    kv=k-ord('0')                           

    #  print(kv)

    #  if press 1,2,3 or 4, change the 3d camera mode

    if kv in [1,2,3,4]:

        dev.ctrl_transfer(0x21,0x01,0x0a00,0x0600,[kv,0x00])

cam.release()                                    #  如果放在wihle循环中,程序强行从 循环中退出后,不能释放资源。再次打开将发生各种错误。

cv2.destroyAllWindows()       


如果上面的程序不能正常运行,可以枚举CHUSEI双目摄像头 USB 端口

## xxx 暴力枚举CHUSEI双目摄像头 USB 端口

##原文链接:https://blog.csdn.net/hushaoqiqimingxing/article/details/96888775 

import cv2

ID = 0

while(1):

    cam = cv2.VideoCapture(ID)

    # get a frame

    ret, frame = cam.read()

    if ret == False:

        ID += 1

        # print(ID)

        # print("X")

    else:

        print(ID)

        print("V")

        break





各种debug报错

error: ......libusb_claim_interface_ ......     usb设备资源被占用,上次运行后未能释放

error: ......could not claim interface 0  usb......设备资源被占用,上次运行后未能释放

error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'  usb     设备资源被占用,上次运行后未能释放 

error: ....._src.empty() in function 'cv::cvtColor' ......            设备资源被占用,上次运行后未能释放





参考资料:usb 细节和定义

https://www.keil.com/pack/doc/mw/USB/html/_u_s_b__endpoints.html

你可能感兴趣的:(20220305CHUSEI双目摄像头windows驱动+python+openCV)