我正在使用连接到运行 raspbian 的 Raspberry pi 4 的 ueye 相机,我正在尝试使用 Python 中的 OpenCV 从相机获取和显示图像。当我使用时出现问题:
cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)
或者
cv2.CAP_V4L2
或者
cv2.CAP_ANY.
它没有检测到相机。
也许问题出在设备索引“0”上,所以我运行了这段代码来尝试其他索引:
import cv2
cams_test=100
for i in range (-1,cams_test):
cap=cv2.VideoCapture(i,cv2.CAP_DSHOW)
test, frame=cap.read()
print("i : "+str(i)+" // result: " +str(test))
if test:
print("SUCCESSFULL!")
所有索引均失败。
我阅读了以下问题如何使用 OpenCV 捕获 ueye 相机的视频流? 但我找不到他们正在谈论的这个 /dev/ueye 目录。
我可以将 videocapture 中的索引号替换为我的 ueye 摄像机的安装路径吗?(我不知道这条路)
有没有办法从 ueye 相机中检索视频流?最好保留 VideoCapture 功能。
这是我的代码:
from tkinter import *
from PIL import Image
from PIL import ImageTk
import cv2
import imutils
def iniciar():
global cap
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
visualizar()
def visualizar():
global cap
if cap is not None:
ret, frame = cap.read()
if ret == True:
frame = imutils.resize(frame, width=640)
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
im = Image.fromarray(frame)
img = ImageTk.PhotoImage(image=im)
lblVideo.configure(image=img)
lblVideo.image = img
lblVideo.after(10, visualizar)
else:
lblVideo.image = ""
cap.release()
def finalizar():
global cap
cap.release()
cap = None
root = Tk()
btnIniciar = Button(root, text="Iniciar", width=45, command=iniciar)
btnIniciar.grid(column=0, row=0, padx=5, pady=5)
btnFinalizar = Button(root, text="Finalizar", width=45, command=finalizar)
btnFinalizar.grid(column=1, row=0, padx=5, pady=5)
lblVideo = Label(root)
lblVideo.grid(column=0, row=1, columnspan=2)
root.mainloop()
感谢正在阅读我的问题的人,我希望答案对其他人有所帮助