ubuntu上python使用opencv调用usb摄像头无故掉线以后重连摄像头。
生活随笔
收集整理的這篇文章主要介紹了
ubuntu上python使用opencv调用usb摄像头无故掉线以后重连摄像头。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
項目中使用opencv調用usb攝像頭,運行過程中,會出現攝像頭掉線的情況。猜測掉線原因是硬件相關,可能是攝像頭,也可能是usb線和端口。
這里主要介紹兩種掉線情況以及代碼重連攝像頭的方式。
1.第一種情況,設備在線
當camera讀取圖片失敗時候,可以通過opencv的方法,釋放攝像頭再打開
camera.release() camera = cv.VideoCapture(0)2.第二種情況,設備不在線
video4 和 video5掉線,實際上usb還連著電腦。
碰到這種情況,可以先查看當前usb所在的上級hub。
lsusb -t
?
比如攝像頭所在的BUS 01,Port 2?
ll /sys/bus/usb/devices
查看usb的上一級。
然后通過命令行將其重置,需要root權限。?
echo?-n?"0000:00:14.0"?|?tee?/sys/bus/pci/drivers/xhci_hcd/unbind echo?-n?"0000:00:14.0"?|?tee?/sys/bus/pci/drivers/xhci_hcd/bind也可以用python代碼重置
def resetUsbHub(key, hub):result = os.system('echo "{}"|sudo -S sh ./usbUnbind.sh {}'.format(key, hub))logger.info("卸載usb結果:{}".format(result))if result == 0:result = os.system('echo "{}"|sudo -S sh ./usbBind.sh {}'.format(key, hub))logger.info("加載usb結果:{}".format(result))sh文件內容?
echo $1|sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind重置以后就可以發現又能找到video4 和 video5。后續就繼續通過opencv 打開攝像頭就行了。?
總結
以上是生活随笔為你收集整理的ubuntu上python使用opencv调用usb摄像头无故掉线以后重连摄像头。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OSChina 元宵节乱弹 ——青龙偃月
- 下一篇: Python利用requests抓取页面