From 7d4346090a442188bc12d283c23a04c6dab1271f Mon Sep 17 00:00:00 2001 From: Joshua Shoemaker Date: Tue, 19 Jan 2021 14:20:59 -0600 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=81=20refact:=20Computer=20Vison=20to?= =?UTF-8?q?=20isolated=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PredictedObjectCollectionController.ts | 32 ------------- src/Controllers/VideoController.ts | 48 ------------------- .../Interfaces/IObjectDetector.ts | 0 src/{ => Vision}/Interfaces/IObjectLocator.ts | 0 src/{ => Vision}/Interfaces/IOffset.ts | 0 .../Interfaces/IPredictedObject.ts | 0 src/{ => Vision}/Interfaces/IUiRenderer.ts | 0 src/{ => Vision}/Interfaces/IVideo.ts | 0 src/{ => Vision}/Interfaces/IVideoCapturer.ts | 0 src/{ => Vision}/Models/PredictedObject.ts | 0 .../Models/PredictedObjectCollection.ts | 0 src/{ => Vision}/Models/Video.ts | 0 .../UseCases/Factories/makeObjectDetector.ts | 2 +- .../UseCases/Factories/makeObjectLocator.ts | 0 .../UseCases/Factories/makePredictedObject.ts | 0 .../UseCases/Factories/makeUiRenderer.ts | 0 .../UseCases/Factories/makeVideoCatpurer.ts | 0 src/{ => Vision}/UseCases/ObjectDetector.ts | 0 src/{ => Vision}/UseCases/ObjectLocator.ts | 0 src/{ => Vision}/UseCases/UiRenderer.ts | 0 src/{ => Vision}/UseCases/VideoCapturer.ts | 0 src/{ => Vision}/Views/PredictedObjectView.ts | 0 src/{ => Vision}/Views/VideoView.ts | 0 src/{ => Vision}/app.ts | 0 webpack.config.js | 6 +-- 25 files changed, 4 insertions(+), 84 deletions(-) delete mode 100644 src/Controllers/PredictedObjectCollectionController.ts delete mode 100644 src/Controllers/VideoController.ts rename src/{ => Vision}/Interfaces/IObjectDetector.ts (100%) rename src/{ => Vision}/Interfaces/IObjectLocator.ts (100%) rename src/{ => Vision}/Interfaces/IOffset.ts (100%) rename src/{ => Vision}/Interfaces/IPredictedObject.ts (100%) rename src/{ => Vision}/Interfaces/IUiRenderer.ts (100%) rename src/{ => Vision}/Interfaces/IVideo.ts (100%) rename src/{ => Vision}/Interfaces/IVideoCapturer.ts (100%) rename src/{ => Vision}/Models/PredictedObject.ts (100%) rename src/{ => Vision}/Models/PredictedObjectCollection.ts (100%) rename src/{ => Vision}/Models/Video.ts (100%) rename src/{ => Vision}/UseCases/Factories/makeObjectDetector.ts (86%) rename src/{ => Vision}/UseCases/Factories/makeObjectLocator.ts (100%) rename src/{ => Vision}/UseCases/Factories/makePredictedObject.ts (100%) rename src/{ => Vision}/UseCases/Factories/makeUiRenderer.ts (100%) rename src/{ => Vision}/UseCases/Factories/makeVideoCatpurer.ts (100%) rename src/{ => Vision}/UseCases/ObjectDetector.ts (100%) rename src/{ => Vision}/UseCases/ObjectLocator.ts (100%) rename src/{ => Vision}/UseCases/UiRenderer.ts (100%) rename src/{ => Vision}/UseCases/VideoCapturer.ts (100%) rename src/{ => Vision}/Views/PredictedObjectView.ts (100%) rename src/{ => Vision}/Views/VideoView.ts (100%) rename src/{ => Vision}/app.ts (100%) diff --git a/src/Controllers/PredictedObjectCollectionController.ts b/src/Controllers/PredictedObjectCollectionController.ts deleted file mode 100644 index ab45ccb..0000000 --- a/src/Controllers/PredictedObjectCollectionController.ts +++ /dev/null @@ -1,32 +0,0 @@ -import PredictedObject from "../Models/PredictedObject" -import PredictedObjectCollection from "../Models/PredictedObjectCollection" -import PredictedObjectView from "../Views/PredictedObjectView" - -class PredictedObjectCollectionController { - private model: PredictedObjectCollection - - constructor () { - this.model = new PredictedObjectCollection() - this.renderView() - } - - set predictedObjects (objects: PredictedObject[]) { - this.model.objects = objects - this.renderView() - } - - public renderView = () => { - const existingPredictedObjectViews = document.querySelectorAll('.PredictedObject') - existingPredictedObjectViews.forEach(v => { - v.outerHTML = '' - }) - - const body = document.querySelector('body')! - this.model.objects.forEach((object: PredictedObject) => { - const predictedObjectView = new PredictedObjectView(object) - body.appendChild(predictedObjectView.element) - }) - } -} - -export default PredictedObjectCollectionController diff --git a/src/Controllers/VideoController.ts b/src/Controllers/VideoController.ts deleted file mode 100644 index 3a975aa..0000000 --- a/src/Controllers/VideoController.ts +++ /dev/null @@ -1,48 +0,0 @@ -import Video from "../Models/Video" -import VideoView from '../Views/VideoView' - -class VideoController { - private defaultWidth: number = 640 - private defaultHeight: number = 480 - private userMediaConstraints = { video: true } - public model: Video - private view: VideoView - - constructor (props: { width?: number, height?: number } = {}) { - this.model = new Video({ - width: props.width || this.defaultWidth, - height: props.height || this.defaultHeight - }) - - this.view = new VideoView(this.model) - this.renderView() - this.enableCamera() - } - - get imageData () { - if (!this.view.element.srcObject) return null - - const canvas: HTMLCanvasElement = document.createElement('canvas') - canvas.width = this.model.width - canvas.height = this.model.height - const context = canvas.getContext('2d')! - context.drawImage(this.view.element, 0, 0, this.model.width, this.model.height) - - return context.getImageData(0, 0, this.model.width, this.model.height) - } - - private enableCamera = async () => { - const stream = await navigator.mediaDevices.getUserMedia(this.userMediaConstraints) - this.view.srcObject = stream - } - - private renderView () { - const existingVideoView = document.querySelector('#videoView') - if (existingVideoView) existingVideoView.outerHTML = '' - - const body = document.querySelector('body')! - body.appendChild(this.view.element) - } -} - -export default VideoController diff --git a/src/Interfaces/IObjectDetector.ts b/src/Vision/Interfaces/IObjectDetector.ts similarity index 100% rename from src/Interfaces/IObjectDetector.ts rename to src/Vision/Interfaces/IObjectDetector.ts diff --git a/src/Interfaces/IObjectLocator.ts b/src/Vision/Interfaces/IObjectLocator.ts similarity index 100% rename from src/Interfaces/IObjectLocator.ts rename to src/Vision/Interfaces/IObjectLocator.ts diff --git a/src/Interfaces/IOffset.ts b/src/Vision/Interfaces/IOffset.ts similarity index 100% rename from src/Interfaces/IOffset.ts rename to src/Vision/Interfaces/IOffset.ts diff --git a/src/Interfaces/IPredictedObject.ts b/src/Vision/Interfaces/IPredictedObject.ts similarity index 100% rename from src/Interfaces/IPredictedObject.ts rename to src/Vision/Interfaces/IPredictedObject.ts diff --git a/src/Interfaces/IUiRenderer.ts b/src/Vision/Interfaces/IUiRenderer.ts similarity index 100% rename from src/Interfaces/IUiRenderer.ts rename to src/Vision/Interfaces/IUiRenderer.ts diff --git a/src/Interfaces/IVideo.ts b/src/Vision/Interfaces/IVideo.ts similarity index 100% rename from src/Interfaces/IVideo.ts rename to src/Vision/Interfaces/IVideo.ts diff --git a/src/Interfaces/IVideoCapturer.ts b/src/Vision/Interfaces/IVideoCapturer.ts similarity index 100% rename from src/Interfaces/IVideoCapturer.ts rename to src/Vision/Interfaces/IVideoCapturer.ts diff --git a/src/Models/PredictedObject.ts b/src/Vision/Models/PredictedObject.ts similarity index 100% rename from src/Models/PredictedObject.ts rename to src/Vision/Models/PredictedObject.ts diff --git a/src/Models/PredictedObjectCollection.ts b/src/Vision/Models/PredictedObjectCollection.ts similarity index 100% rename from src/Models/PredictedObjectCollection.ts rename to src/Vision/Models/PredictedObjectCollection.ts diff --git a/src/Models/Video.ts b/src/Vision/Models/Video.ts similarity index 100% rename from src/Models/Video.ts rename to src/Vision/Models/Video.ts diff --git a/src/UseCases/Factories/makeObjectDetector.ts b/src/Vision/UseCases/Factories/makeObjectDetector.ts similarity index 86% rename from src/UseCases/Factories/makeObjectDetector.ts rename to src/Vision/UseCases/Factories/makeObjectDetector.ts index bf82047..3e0f911 100644 --- a/src/UseCases/Factories/makeObjectDetector.ts +++ b/src/Vision/UseCases/Factories/makeObjectDetector.ts @@ -3,7 +3,7 @@ import ObjectDetector from "../ObjectDetector" const defaultPredictions = [ (prediction: DetectedObject) => prediction.score > 0.6, - (prediction: DetectedObject) => prediction.class === 'cat', + (prediction: DetectedObject) => prediction.class === 'person', ] function makeObjectDetector (filterPredicates?: Function[]): ObjectDetector { diff --git a/src/UseCases/Factories/makeObjectLocator.ts b/src/Vision/UseCases/Factories/makeObjectLocator.ts similarity index 100% rename from src/UseCases/Factories/makeObjectLocator.ts rename to src/Vision/UseCases/Factories/makeObjectLocator.ts diff --git a/src/UseCases/Factories/makePredictedObject.ts b/src/Vision/UseCases/Factories/makePredictedObject.ts similarity index 100% rename from src/UseCases/Factories/makePredictedObject.ts rename to src/Vision/UseCases/Factories/makePredictedObject.ts diff --git a/src/UseCases/Factories/makeUiRenderer.ts b/src/Vision/UseCases/Factories/makeUiRenderer.ts similarity index 100% rename from src/UseCases/Factories/makeUiRenderer.ts rename to src/Vision/UseCases/Factories/makeUiRenderer.ts diff --git a/src/UseCases/Factories/makeVideoCatpurer.ts b/src/Vision/UseCases/Factories/makeVideoCatpurer.ts similarity index 100% rename from src/UseCases/Factories/makeVideoCatpurer.ts rename to src/Vision/UseCases/Factories/makeVideoCatpurer.ts diff --git a/src/UseCases/ObjectDetector.ts b/src/Vision/UseCases/ObjectDetector.ts similarity index 100% rename from src/UseCases/ObjectDetector.ts rename to src/Vision/UseCases/ObjectDetector.ts diff --git a/src/UseCases/ObjectLocator.ts b/src/Vision/UseCases/ObjectLocator.ts similarity index 100% rename from src/UseCases/ObjectLocator.ts rename to src/Vision/UseCases/ObjectLocator.ts diff --git a/src/UseCases/UiRenderer.ts b/src/Vision/UseCases/UiRenderer.ts similarity index 100% rename from src/UseCases/UiRenderer.ts rename to src/Vision/UseCases/UiRenderer.ts diff --git a/src/UseCases/VideoCapturer.ts b/src/Vision/UseCases/VideoCapturer.ts similarity index 100% rename from src/UseCases/VideoCapturer.ts rename to src/Vision/UseCases/VideoCapturer.ts diff --git a/src/Views/PredictedObjectView.ts b/src/Vision/Views/PredictedObjectView.ts similarity index 100% rename from src/Views/PredictedObjectView.ts rename to src/Vision/Views/PredictedObjectView.ts diff --git a/src/Views/VideoView.ts b/src/Vision/Views/VideoView.ts similarity index 100% rename from src/Views/VideoView.ts rename to src/Vision/Views/VideoView.ts diff --git a/src/app.ts b/src/Vision/app.ts similarity index 100% rename from src/app.ts rename to src/Vision/app.ts diff --git a/webpack.config.js b/webpack.config.js index a6eb348..5ecda91 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,10 +1,10 @@ const path = require('path'); module.exports = { - entry: './src/app.ts', + entry: './src/Vision/app.ts', devtool: 'inline-source-map', devServer: { - contentBase: './dist', + contentBase: './dist/Vision', hot: true, }, module: { @@ -21,6 +21,6 @@ module.exports = { }, output: { filename: 'app.js', - path: path.resolve(__dirname, 'dist'), + path: path.resolve(__dirname, 'dist', 'Vision'), }, }; \ No newline at end of file