From c9af5913faf80d6159ba76d575562b5c227e041e Mon Sep 17 00:00:00 2001 From: Emiliana <38952746+emilianavt@users.noreply.github.com> Date: Sat, 26 Sep 2020 20:18:29 +0200 Subject: [PATCH] Added support for picking directshow device capability lines. --- dshowcapture.py | 73 +++++++++++++++++++++++------- dshowcapture/dshowcapture_x64.dll | Bin 102912 -> 116736 bytes dshowcapture/dshowcapture_x86.dll | Bin 92160 -> 104448 bytes facetracker.py | 44 +++++++++++++----- input_reader.py | 20 ++++++-- 5 files changed, 104 insertions(+), 33 deletions(-) diff --git a/dshowcapture.py b/dshowcapture.py index f91650f..cfb4e79 100644 --- a/dshowcapture.py +++ b/dshowcapture.py @@ -5,6 +5,7 @@ import numpy as np from ctypes import * from PIL import Image import cv2 +import json def resolve(name): f = os.path.join(os.path.dirname(__file__), name) @@ -13,7 +14,7 @@ def resolve(name): lib = None def create_frame_buffer(width, height): - buffer = bytearray(width * height * 4) + buffer = bytearray(width * height * 4 * 4) char_array = c_char * len(buffer) return char_array.from_buffer(buffer) @@ -31,16 +32,20 @@ class DShowCapture(): lib.get_devices.argtypes = [c_void_p] lib.get_device.argtypes = [c_void_p, c_int, c_char_p, c_int] lib.capture_device.argtypes = [c_void_p, c_int, c_int, c_int, c_int] + lib.capture_device_by_dcap.argtypes = [c_void_p, c_int, c_int, c_int, c_int, c_longlong] lib.capture_device_default.argtypes = [c_void_p, c_int] lib.get_width.argtypes = [c_void_p] lib.get_height.argtypes = [c_void_p] lib.get_fps.argtypes = [c_void_p] lib.get_flipped.argtypes = [c_void_p] lib.get_colorspace.argtypes = [c_void_p] + lib.get_colorspace_internal.argtypes = [c_void_p] lib.capturing.argtypes = [c_void_p] lib.get_frame.argtypes = [c_void_p, c_int, c_char_p, c_int] lib.get_size.argtypes = [c_void_p] lib.stop_capture.argtypes = [c_void_p] + lib.get_json_length.argtypes = [c_void_p] + lib.get_json.argtypes = [c_void_p, c_char_p, c_int] lib.destroy_capture.argtypes = [c_void_p] self.lib = lib self.cap = lib.create_capture() @@ -49,6 +54,7 @@ class DShowCapture(): self.have_devices = False self.size = None self.real_size = None + self.info = None def __del__(self): if not self.buffer is None: @@ -65,6 +71,14 @@ class DShowCapture(): name_str = str(self.name_buffer.value.decode('utf8')) return name_str + def get_info(self): + json_length = self.lib.get_json_length(self.cap); + json_buffer = create_string_buffer(json_length) + self.lib.get_json(self.cap, json_buffer, json_length); + json_text = str(json_buffer.value.decode('utf8')) + self.info = json.loads(json_text) + return self.info + def capture_device(self, cam, width, height, fps): if not self.have_devices: self.get_devices() @@ -81,6 +95,23 @@ class DShowCapture(): self.real_size = None return ret; + def capture_device_by_dcap(self, cam, dcap, width, height, fps): + if not self.have_devices: + self.get_devices() + fps = int(10000000 / fps) + ret = self.lib.capture_device_by_dcap(self.cap, cam, dcap, width, height, fps) == 1 + if ret: + self.width = self.get_width() + self.height = self.get_height() + self.flipped = self.get_flipped() + self.colorspace = self.get_colorspace() + self.size = self.width * self.height * 4 * 4 + self.buffer = create_frame_buffer(self.width, self.height) + else: + self.size = None + self.real_size = None + return ret; + def capture_device_default(self, cam): if not self.have_devices: self.get_devices() @@ -90,7 +121,7 @@ class DShowCapture(): self.height = self.get_height() self.flipped = self.get_flipped() self.colorspace = self.get_colorspace() - self.size = self.width * self.height * 4 + self.size = self.width * self.height * 4 * 4 self.buffer = create_frame_buffer(self.width, self.height) else: self.size = None @@ -110,7 +141,13 @@ class DShowCapture(): return self.lib.get_flipped(self.cap) != 0 def get_colorspace(self): - return self.lib.get_colorspace(self.cap) + colorspace = self.lib.get_colorspace(self.cap) + if colorspace == 0: + colorspace = self.lib.get_colorspace_internal(self.cap) + return colorspace + + def get_colorspace_internal(self): + return self.lib.get_colorspace_internal(self.cap) def capturing(self): return self.lib.capturing(self.cap) == 1 @@ -118,32 +155,36 @@ class DShowCapture(): def get_frame(self, timeout): if self.size is None: return None - if self.lib.get_frame(self.cap, timeout, self.buffer, self.size) == 0: - return None - if self.real_size is None: - self.real_size = self.lib.get_size(self.cap) + self.real_size = self.lib.get_frame(self.cap, timeout, self.buffer, self.size) img = np.frombuffer(self.buffer, dtype=np.uint8)[0:self.real_size] if self.colorspace in [100, 101]: - img = cv2.cvtColor(img.reshape((self.height,self.width,4)), cv2.COLOR_BGRA2BGR); + if self.real_size == self.height * self.width * 4: + img = cv2.cvtColor(img.reshape((self.height,self.width,4)), cv2.COLOR_BGRA2BGR) + elif self.real_size == self.height * self.width * 3: + img = img.reshape((self.height,self.width,3)) + else: + return None if not self.flipped: img = cv2.flip(img, 0) return img elif self.colorspace == 200: - img = cv2.cvtColor(img.reshape((3 * self.height // 2,self.width,1)), cv2.COLOR_YUV2BGR_I420); + img = cv2.cvtColor(img.reshape((3 * self.height // 2,self.width,1)), cv2.COLOR_YUV2BGR_I420) elif self.colorspace == 201: - img = cv2.cvtColor(img.reshape((3 * self.height // 2,self.width,1)), cv2.COLOR_YUV2BGR_NV12); + img = cv2.cvtColor(img.reshape((3 * self.height // 2,self.width,1)), cv2.COLOR_YUV2BGR_NV12) elif self.colorspace == 202: - img = cv2.cvtColor(img.reshape((3 * self.height // 2,self.width,1)), cv2.COLOR_YUV2BGR_YV12); + img = cv2.cvtColor(img.reshape((3 * self.height // 2,self.width,1)), cv2.COLOR_YUV2BGR_YV12) elif self.colorspace == 203: - img = cv2.cvtColor(img.reshape((self.height,self.width,1)), cv2.COLOR_GRAY2BGR); + img = cv2.cvtColor(img.reshape((self.height,self.width,1)), cv2.COLOR_GRAY2BGR) elif self.colorspace == 300: - img = cv2.cvtColor(img.reshape((self.height,self.width,2)), cv2.COLOR_YUV2BGR_YVYU); + img = cv2.cvtColor(img.reshape((self.height,self.width,2)), cv2.COLOR_YUV2BGR_YVYU) elif self.colorspace == 301: - img = cv2.cvtColor(img.reshape((self.height,self.width,2)), cv2.COLOR_YUV2BGR_YUY2); + img = cv2.cvtColor(img.reshape((self.height,self.width,2)), cv2.COLOR_YUV2BGR_YUY2) elif self.colorspace == 302: - img = cv2.cvtColor(img.reshape((self.height,self.width,2)), cv2.COLOR_YUV2BGR_UYVY); + img = cv2.cvtColor(img.reshape((self.height,self.width,2)), cv2.COLOR_YUV2BGR_UYVY) elif self.colorspace == 303: return None + elif self.colorspace == 400: + img = cv2.imdecode(img, cv2.IMREAD_COLOR); if self.flipped: img = cv2.flip(img, 0) return img @@ -186,7 +227,7 @@ if __name__ == "__main__": width = cap.get_width() height = cap.get_height() flipped = cap.get_flipped() - print(f"Width: {width} Height: {height} FPS: {cap.get_fps()} Flipped: {flipped} Colorspace: {cap.get_colorspace()}") + print(f"Width: {width} Height: {height} FPS: {cap.get_fps()} Flipped: {flipped} Colorspace: {cap.get_colorspace()} Internal: {cap.get_colorspace_internal()}") while True: img = cap.get_frame(1000) diff --git a/dshowcapture/dshowcapture_x64.dll b/dshowcapture/dshowcapture_x64.dll index eb8a2336f0d4fedad80d74bc8cdb277758e80ec5..98f9f9a23d0b9ff83c7401b84037306701f93174 100644 GIT binary patch delta 50791 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 Ca1*Wo delta 38618 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 gD7Jvlb 0: import dshowcapture cap = dshowcapture.DShowCapture() - camera_count = cap.get_devices() - if args.list_cameras == 1: - print("Available cameras:") - for i in range(camera_count): - camera_name = cap.get_device(i) + if args.list_cameras == 3: + info = cap.get_info() + unit = 10000000.; + formats = {0: "Any", 1: "Unknown", 100: "ARGB", 101: "XRGB", 200: "I420", 201: "NV12", 202: "YV12", 203: "Y800", 300: "YVYU", 301: "YUY2", 302: "UYVY", 303: "HDYC (Unsupported)", 400: "MJPEG", 401: "H264" } + for cam in info: + print(f"{cam['id']}: {cam['name']}") + for caps in cam['caps']: + format = caps['format'] + if caps['format'] in formats: + format = formats[caps['format']] + if caps['minCX'] == caps['maxCX'] and caps['minCY'] == caps['maxCY']: + print(f" {caps['id']}: Resolution: {caps['minCX']}x{caps['minCY']} FPS: {unit/caps['maxInterval']:.3f}-{unit/caps['minInterval']:.3f} Format: {format}") + else: + print(f" {caps['id']}: Resolution: {caps['minCX']}x{caps['minCY']}-{caps['maxCX']}x{caps['maxCY']} FPS: {unit/caps['maxInterval']:.3f}-{unit/caps['minInterval']:.3f} Format: {format}") + else: + camera_count = cap.get_devices() if args.list_cameras == 1: - print(f"{i}: {camera_name}") - else: - print(camera_name) + print("Available cameras:") + for i in range(camera_count): + camera_name = cap.get_device(i) + if args.list_cameras == 1: + print(f"{i}: {camera_name}") + else: + print(camera_name) cap.destroy_capture() sys.exit(0) @@ -86,7 +102,7 @@ import time import cv2 import socket import struct -from input_reader import InputReader, VideoReader, try_int +from input_reader import InputReader, VideoReader, DShowCaptureReader, try_int from tracker import Tracker target_ip = args.ip @@ -96,11 +112,15 @@ if args.faces >= 40: print("Transmission of tracking data over network is not supported with 40 or more faces.") fps = 0 +dcap = None use_dshowcapture_flag = False if os.name == 'nt': fps = args.fps + dcap = args.dcap use_dshowcapture_flag = True if args.use_dshowcapture == 1 else False - input_reader = InputReader(args.capture, args.raw_rgb, args.width, args.height, fps, use_dshowcapture=use_dshowcapture_flag) + input_reader = InputReader(args.capture, args.raw_rgb, args.width, args.height, fps, use_dshowcapture=use_dshowcapture_flag, dcap=dcap) + if args.dcap == -1 and type(input_reader) == DShowCaptureReader: + fps = min(fps, input_reader.device.get_fps()) else: input_reader = InputReader(args.capture, args.raw_rgb, args.width, args.height, fps, use_dshowcapture=use_dshowcapture_flag) if type(input_reader.reader) == VideoReader: @@ -146,7 +166,7 @@ try: source_name = input_reader.name while repeat or input_reader.is_open(): if not input_reader.is_open() or need_reinit == 1: - input_reader = InputReader(args.capture, args.raw_rgb, args.width, args.height, fps, use_dshowcapture=use_dshowcapture_flag) + input_reader = InputReader(args.capture, args.raw_rgb, args.width, args.height, fps, use_dshowcapture=use_dshowcapture_flag, dcap=dcap) if input_reader.name != source_name: print(f"Failed to reinitialize camera and got {input_reader.name} instead of {source_name}.") sys.exit(1) diff --git a/input_reader.py b/input_reader.py index 8eb3542..709308d 100644 --- a/input_reader.py +++ b/input_reader.py @@ -54,16 +54,26 @@ class EscapiReader(VideoReader): escapi.deinit_camera(self.device) class DShowCaptureReader(VideoReader): - def __init__(self, capture, width, height, fps, use_dshowcapture=True): + def __init__(self, capture, width, height, fps, use_dshowcapture=True, dcap=None): self.device = None self.width = width self.height = height self.fps = fps + self.dcap = dcap; self.device = dshowcapture.DShowCapture() self.device.get_devices() self.name = self.device.get_device(capture) - self.device.capture_device(capture, self.width, self.height, self.fps) - print(f"Camera: \"{self.name}\" Resolution: {self.device.get_width()}x{self.device.get_height()} Frame rate: {self.device.get_fps()} Colorspace: {self.device.get_colorspace()} Flipped: {self.device.get_flipped()}") + if dcap is None: + print("Opening classic") + self.device.capture_device(capture, self.width, self.height, self.fps) + else: + if dcap < 0: + print("Opening default") + self.device.capture_device_default(capture) + else: + print("Opening exact") + self.device.capture_device_by_dcap(capture, dcap, self.width, self.height, self.fps) + print(f"Camera: \"{self.name}\" Capability ID: {dcap} Resolution: {self.device.get_width()}x{self.device.get_height()} Frame rate: {self.device.get_fps()} Colorspace: {self.device.get_colorspace()} Internal: {self.device.get_colorspace_internal()} Flipped: {self.device.get_flipped()}") self.timeout = 1000 def is_open(self): return self.device.capturing() @@ -159,7 +169,7 @@ def test_reader(reader): return False class InputReader(): - def __init__(self, capture, raw_rgb, width, height, fps, use_dshowcapture=False): + def __init__(self, capture, raw_rgb, width, height, fps, use_dshowcapture=False, dcap=None): self.reader = None self.name = str(capture) try: @@ -174,7 +184,7 @@ class InputReader(): name = "" try: if use_dshowcapture: - self.reader = DShowCaptureReader(int(capture), width, height, fps) + self.reader = DShowCaptureReader(int(capture), width, height, fps, dcap=dcap) name = self.reader.name good = test_reader(self.reader) self.name = name