2

我正在使用连接到运行 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()

感谢正在阅读我的问题的人,我希望答案对其他人有所帮助

4

0 回答 0