【问题标题】:Is there a different way to check camera status than cv2.videocapture?是否有与 cv2.videocapture 不同的方法来检查相机状态?
【发布时间】:2019-09-29 15:17:16
【问题描述】:

我有一个在循环内执行 cv2.VideoCapture 的代码。这使得代码不断检查相机是否打开,这是导致相机未按应显示视频片段的原因。我在循环中有 cv2.VideoCapture,所以我可以检测相机是否连接。有没有办法解决这个问题,有什么方法可以检查我的网络摄像头是否连接?

我已经尝试过多线程等以获得进一步的成功。

一些代码:

from tkinter import *  # Import the tkinter module (For the Graphical User Interface)
import cv2  # Import the cv2 module for web camera footage
import PIL  # Import the pillow library for image configuration.
from PIL import Image, ImageTk  # Import the specifics for Image configuration.

print("[INFO] Imports done")

width, height = 800, 600  # Define The width and height widget for cap adjustment
RootGeometry = str(width) + "x" + str(height)  # Make a variable to adjust tkinter frame
print("[INFO] Geometries made")

ImageSource = 0
cap = cv2.VideoCapture(ImageSource)  # First VideoCapture
cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
print("[INFO] Cap set")

root = Tk()
print("[INFO] Window made")

root.title("Main Window")
root.configure(background="white")
root.geometry(RootGeometry)
root.bind('<Escape>', lambda e: root.quit())
lmain = Label(root)
lmain.pack()
print("[INFO] Configuration of cap done.")


def ShowFrame():
    ok, frame = cap.read()
    if ok:
        print("[INFO] Show frame Initialized.")

        cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
        img = PIL.Image.fromarray(cv2image)
        imgtk = ImageTk.PhotoImage(image=img)
        lmain.imgtk = imgtk
        lmain.configure(image=imgtk)
        print("[INFO] After 10 initializing")
        lmain.after(10, ShowFrame)
        print("[INFO] Showed image")

    else:
        lmain.after(10, CheckSource)


def CheckSource():
    print("[INFO] CheckSource Triggered.")
    capture = cv2.VideoCapture(ImageSource)
    if capture.isOpened():
        print("[INFO] [DEBUG] if Ok initialized")
        if cv2.waitKey(1) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            cv2.waitKey(0)
            print("[WARNING] Exiting app after command")

        ShowFrame()

    else:
        print("[WARNING] No source found. Looking for source.")
        lmain.after(10, CheckSource)


CheckSource()
root.mainloop()

非常感谢任何和所有帮助!

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2021-11-08
      • 2015-12-28
      • 2018-05-21
      相关资源
      最近更新 更多