cross platform camera access

This commit is contained in:
Lincoln-LM 2022-01-06 13:33:06 -07:00
parent 25fbd14bfa
commit 305790fc0c
2 changed files with 28 additions and 3 deletions

View File

@ -423,7 +423,15 @@ class Application(tk.Frame):
from windowcapture import WindowCapture
video = WindowCapture(self.config_json["WindowPrefix"],self.config_json["crop"])
else:
video = cv2.VideoCapture(self.config_json["camera"],cv2.CAP_DSHOW)
if sys.platform.startswith('linux'): # all Linux
backend = cv2.CAP_V4L
elif sys.platform.startswith('win'): # MS Windows
backend = cv2.CAP_DSHOW
elif sys.platform.startswith('darwin'): # macOS
backend = cv2.CAP_QT
else:
backend = cv2.CAP_ANY # auto-detect via OpenCV
video = cv2.VideoCapture(self.config_json["camera"],backend)
video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
video.set(cv2.CAP_PROP_BUFFERSIZE,1)

View File

@ -4,6 +4,7 @@
from typing import List
from typing import Tuple
import time
import sys
import cv2
from xorshift import Xorshift
import calc
@ -30,7 +31,15 @@ def tracking_blink(img, roi_x, roi_y, roi_w, roi_h, th = 0.9, size = 40, Monitor
from windowcapture import WindowCapture
video = WindowCapture(WindowPrefix,crop)
else:
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
if sys.platform.startswith('linux'): # all Linux
backend = cv2.CAP_V4L
elif sys.platform.startswith('win'): # MS Windows
backend = cv2.CAP_DSHOW
elif sys.platform.startswith('darwin'): # macOS
backend = cv2.CAP_QT
else:
backend = cv2.CAP_ANY # auto-detect via OpenCV
video = cv2.VideoCapture(camera,backend)
video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
video.set(cv2.CAP_PROP_BUFFERSIZE,1)
@ -180,7 +189,15 @@ def tracking_poke_blink(img, roi_x, roi_y, roi_w, roi_h, size = 60, MonitorWindo
from windowcapture import WindowCapture
video = WindowCapture(WindowPrefix, crop)
else:
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
if sys.platform.startswith('linux'): # all Linux
backend = cv2.CAP_V4L
elif sys.platform.startswith('win'): # MS Windows
backend = cv2.CAP_DSHOW
elif sys.platform.startswith('darwin'): # macOS
backend = cv2.CAP_QT
else:
backend = cv2.CAP_ANY # auto-detect via OpenCV
video = cv2.VideoCapture(camera,backend)
video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
video.set(cv2.CAP_PROP_BUFFERSIZE,1)