diff --git a/plugins/coreml/package-lock.json b/plugins/coreml/package-lock.json index f60708961..b8b1251f3 100644 --- a/plugins/coreml/package-lock.json +++ b/plugins/coreml/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/coreml", - "version": "0.1.4", + "version": "0.1.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/coreml", - "version": "0.1.4", + "version": "0.1.5", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } diff --git a/plugins/coreml/package.json b/plugins/coreml/package.json index 4ae7af8ca..1c5526b6b 100644 --- a/plugins/coreml/package.json +++ b/plugins/coreml/package.json @@ -41,5 +41,5 @@ "devDependencies": { "@scrypted/sdk": "file:../../sdk" }, - "version": "0.1.4" + "version": "0.1.5" } diff --git a/plugins/objectdetector/package-lock.json b/plugins/objectdetector/package-lock.json index 7288b0533..5b972bfce 100644 --- a/plugins/objectdetector/package-lock.json +++ b/plugins/objectdetector/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/objectdetector", - "version": "0.0.111", + "version": "0.0.112", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/objectdetector", - "version": "0.0.111", + "version": "0.0.112", "license": "Apache-2.0", "dependencies": { "@scrypted/common": "file:../../common", diff --git a/plugins/objectdetector/package.json b/plugins/objectdetector/package.json index 17594cf5a..4af3358f5 100644 --- a/plugins/objectdetector/package.json +++ b/plugins/objectdetector/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/objectdetector", - "version": "0.0.111", + "version": "0.0.112", "description": "Scrypted Video Analysis Plugin. Installed alongside a detection service like OpenCV or TensorFlow.", "author": "Scrypted", "license": "Apache-2.0", diff --git a/plugins/objectdetector/src/ffmpeg-videoframes.ts b/plugins/objectdetector/src/ffmpeg-videoframes.ts index 0c29b890e..98a29a31e 100644 --- a/plugins/objectdetector/src/ffmpeg-videoframes.ts +++ b/plugins/objectdetector/src/ffmpeg-videoframes.ts @@ -8,6 +8,7 @@ import { Readable } from 'stream'; async function createVipsMediaObject(image: VipsImage): Promise { const ret = await sdk.mediaManager.createMediaObject(image, ScryptedMimeTypes.Image, { + format: null, timestamp: 0, width: image.width, height: image.height, diff --git a/plugins/python-codecs/package-lock.json b/plugins/python-codecs/package-lock.json index 3fa820e63..14add7f55 100644 --- a/plugins/python-codecs/package-lock.json +++ b/plugins/python-codecs/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/python-codecs", - "version": "0.1.17", + "version": "0.1.18", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@scrypted/python-codecs", - "version": "0.1.17", + "version": "0.1.18", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } diff --git a/plugins/python-codecs/package.json b/plugins/python-codecs/package.json index 6f90d1974..dc7dc0cdb 100644 --- a/plugins/python-codecs/package.json +++ b/plugins/python-codecs/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/python-codecs", - "version": "0.1.17", + "version": "0.1.18", "description": "Python Codecs for Scrypted", "keywords": [ "scrypted", diff --git a/plugins/python-codecs/src/pilimage.py b/plugins/python-codecs/src/pilimage.py index 8a817959a..9cf05d9c1 100644 --- a/plugins/python-codecs/src/pilimage.py +++ b/plugins/python-codecs/src/pilimage.py @@ -72,6 +72,7 @@ def toPILImage(pilImageWrapper: PILImage, options: scrypted_sdk.ImageOptions = N async def createPILMediaObject(image: PILImage): ret = await scrypted_sdk.mediaManager.createMediaObject(image, scrypted_sdk.ScryptedMimeTypes.Image.value, { + 'format': None, 'width': image.width, 'height': image.height, 'toBuffer': lambda options = None: image.toBuffer(options), diff --git a/plugins/python-codecs/src/vipsimage.py b/plugins/python-codecs/src/vipsimage.py index 61584ab36..bddfc8569 100644 --- a/plugins/python-codecs/src/vipsimage.py +++ b/plugins/python-codecs/src/vipsimage.py @@ -75,6 +75,7 @@ def toVipsImage(vipsImageWrapper: VipsImage, options: scrypted_sdk.ImageOptions async def createVipsMediaObject(image: VipsImage): ret = await scrypted_sdk.mediaManager.createMediaObject(image, scrypted_sdk.ScryptedMimeTypes.Image.value, { + 'format': None, 'width': image.width, 'height': image.height, 'toBuffer': lambda options = None: image.toBuffer(options), diff --git a/plugins/tensorflow-lite/package-lock.json b/plugins/tensorflow-lite/package-lock.json index f56641912..4c3ccac44 100644 --- a/plugins/tensorflow-lite/package-lock.json +++ b/plugins/tensorflow-lite/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/tensorflow-lite", - "version": "0.1.7", + "version": "0.1.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/tensorflow-lite", - "version": "0.1.7", + "version": "0.1.8", "devDependencies": { "@scrypted/sdk": "file:../../sdk" } diff --git a/plugins/tensorflow-lite/package.json b/plugins/tensorflow-lite/package.json index 4bb596c0b..906a484f9 100644 --- a/plugins/tensorflow-lite/package.json +++ b/plugins/tensorflow-lite/package.json @@ -44,5 +44,5 @@ "devDependencies": { "@scrypted/sdk": "file:../../sdk" }, - "version": "0.1.7" + "version": "0.1.8" } diff --git a/plugins/tensorflow-lite/src/predict/__init__.py b/plugins/tensorflow-lite/src/predict/__init__.py index 35d9fc67a..c292bcf5a 100644 --- a/plugins/tensorflow-lite/src/predict/__init__.py +++ b/plugins/tensorflow-lite/src/predict/__init__.py @@ -44,7 +44,6 @@ def parse_label_contents(contents: str): ret[row_number] = content.strip() return ret - class RawImage: jpegMediaObject: scrypted_sdk.MediaObject @@ -298,9 +297,12 @@ class PredictPlugin(DetectPlugin, scrypted_sdk.BufferConverter, scrypted_sdk.Set return point[0], point[1], True data = await videoFrame.toBuffer({ - 'format': 'rgb', + 'format': videoFrame.format or 'rgb', }) - image = Image.frombuffer('RGB', (w, h), data) + if videoFrame.format == 'rgba': + image = Image.frombuffer('RGBA', (w, h), data).convert('RGB') + else: + image = Image.frombuffer('RGB', (w, h), data) try: ret = await self.detect_once(image, settings, src_size, cvss) return ret @@ -328,7 +330,7 @@ class PredictPlugin(DetectPlugin, scrypted_sdk.BufferConverter, scrypted_sdk.Set 'width': sw, 'height': sh, }, - 'format': 'rgb', + 'format': videoFrame.format or 'rgb', }), videoFrame.toBuffer({ 'resize': { @@ -341,12 +343,18 @@ class PredictPlugin(DetectPlugin, scrypted_sdk.BufferConverter, scrypted_sdk.Set 'width': sw, 'height': sh, }, - 'format': 'rgb', + 'format': videoFrame.format or 'rgb', }) ) - first = Image.frombuffer('RGB', (w, h), firstData) - second = Image.frombuffer('RGB', (w, h), secondData) + if videoFrame.format == 'rgba': + first = Image.frombuffer('RGBA', (w, h), firstData).convert('RGB') + else: + first = Image.frombuffer('RGB', (w, h), firstData) + if videoFrame.format == 'rgba': + second = Image.frombuffer('RGBA', (w, h), secondData).convert('RGB') + else: + second = Image.frombuffer('RGB', (w, h), secondData) def cvss1(point, normalize=False): return point[0] / s, point[1] / s, True