Python Code Publishing and Testing Application
RealTime7 Inc. is a developer of the VIPER AI camera. A code publishing application is written in Python that can publish code from the development machine to the camera. The goal of the development is to testing and verify this application and also to further write Python scripts for settings up and regression testing the camera when it is first initialized. Tasks or Sub-Modules: 1) FFMPEG compilation and test program accelerated for IMX8MPLUS GPU to convert H264 stream to JPEG frames using arm64 cross compiler and using pip module. (C++/Python) The IMX provides a hardware accelerated H264 stream but JPEG encoding is very slow. The goal is to read in a Key Frame into JPEG and then update the key frame with the stream updates to always have a current JPEG image that can be used for video processing. The code should be tested first in python and then the libraries for FFMPEG compiled in C++ into a test program that can be integrated into the main body of the code. Estimated time 20-40 hrs. 2) Python UI with TKinter to Show camera Output Images. Use OpenCV to process OCR on the numerical ID to show the Image and Serial number in appropriate Box. On Click show the Test Log. When Cameras are being manufactured, they are placed in a cradle to perform initialization testing, calibration, and configuration. A registrar software runs on an independent machine and is connected to the cameras with a common network switch. The camera will transmit a picture of its cradle that includes a numerical ID. Using OCR, get the numerical ID of the camera, display it in the correct slot on the screen UI for the operator to see, with its serial number, and test results in Green for SUCCESS, and RED for Failure. Double click on the UI allows the operators to see the test log of the camera in a new window. Estimated time 20 hrs. 3) Python OnVif Test Cases Processor. Test the Camera is working properly by processing discovery, Create User, Select User, Change User Pwd, Delete User, Get Camera Image, Verify Camera Image, Get Camera Video, Set Camera P2P Broker, Repeat Tests with P2P Broker, Reset Broker, Turn On Success or Failure GPIO with command message. After Step 2, the camera is rebooted to start it's firmware. One of the registrar threads will detect that a new camera has joined the network. It will then proceed to process the supplied command messages to run regression tests. When the tests are complete, the registrar will send a Command to the camera to turn on an LED with Red or Green status indicator, allowing the operator to know the camera has passed quality assurance Estimated time 60-80 hours. 4) Java Based Video Player, Implement MVC design pattern, allow Video Canvas to be dragged and reorganized on different Video Frames. Research and test installer for Mac, Linux, Windows. Java network controller with TCP/IP and UDP for secure camera communications, implementing Python test code. A viewer or client program for the Camera supports the showing of videos. Start by first implementing the MVC design pattern to show some sample videos on a Canvas. The purpose is to allow the user to drag and drop the video controls onto different frames. Think a security camera console with multiple monitors where the cameras are organized in grid patterns per the user preferences. After implementing the display skeleton, translate the UDP and TCP based messages to get new videos and camera events to show the real time feed of cameras both in the network and in remote locations. Use the configurations to determine which videos to store and for how long Estimated Time 120+ hours.
Code Publishing Application Written in Python
The goal of this project is to complete and test a code publishing application written in Python for RealTime7 Inc. This will involve several different steps for the students, including: - An existing Python script exists. Part of which is for the development environment and also for the client environment. Understand the code and the flow of control. - Testing the application for bugs and errors. - Optimizing the code for better performance. - Improving the code to make it more fault tolerant and faster. - Testing the application with users and making improvements based on feedback.
3-d Structure from Motion - Machine Vision Algorithms Development
The main goal of the project is to convert a video sequence into a 3-d point cloud that represents the object's essential characteristics and is able to identify and differentiate the object.
Flutter App Development with Bluetooth Communication to IoT Device
The main goal of the project is to write an app to control and manage a fridge over Bluetooth using the Flutter framework. The app has only two pages, one is a loading page, and the second is a device management page. The app will support pairing over Bluetooth, polling the device(s) to see if they are in range, sending a command to increase and decrease the set temperature, sending a command to poll for the current fridge temperature, and also unpairing the device by removing the MAC address.
Networked Video Client for Linux/Windows/Mac in Java - Phase 3 of 3
The main goal of the project is to develop an extensible Java client application for the Viper Camera being developed by RealTime7 Inc. The application is comprised of a video player, a network communications module, and a UI for settings management. The video player is written in Java that can be cross platform, so as to be compatible and ideally work on Linux, Mac, and Windows operating systems. The video player implements a MVC pattern and is written in a modular fashion to allow seamless extensibility by listening and handling events. The project is to be setup in three phases and ideally the same students will work on all three phases.
Networked Video Client for Linux/Windows/Mac in Java - Phase 2 of 3
The main goal of the project is to develop an extensible Java client application for the Viper Camera being developed by RealTime7 Inc. The application is comprised of a video player, a network communications module, and a UI for settings management. The video player is written in Java that can be cross platform, so as to be compatible and ideally work on Linux, Mac, and Windows operating systems. The video player implements a MVC pattern and is written in a modular fashion to allow seamless extensibility by listening and handling events. The project is to be setup in three phases and ideally the same students will work on all three phases.
Networked Video Client for Linux/Windows/Mac in Java - Phase 1 of 3
The main goal of the project is to develop an extensible Java client application for the Viper Camera being developed by RealTime7 Inc. The application is comprised of a video player, a network communications module, and a UI for settings management. The video player is written in Java that can be cross platform, so as to be compatible and ideally work on Linux, Mac, and Windows operating systems. The video player implements a MVC pattern and is written in a modular fashion to allow seamless extensibility by listening and handling events. The project is to be setup in three phases and ideally the same students will work on all phases.
Machine Vision & Firmware Development in C++ & Python
The purpose of the project is to develop an AI camera that can do detection and recognition of objects in real time. The researcher will work with a video processing library called Gstreamer, Linux Debian, OpenCV, TensorflowLite, and C++ with gcc compilers. This will involve: Setup the Gstreamer pipeline to collect frames of video data Use CUDA and GPU acceleration to resize the frame to the appropriate size required by the model Store the frames in a vector object with datetime and video segment references Invoke Tensorflowlite - tflite detection model on frame to extract feature information, class scores, and bounding boxes Invoke Tensorflowlite - tflite recognition model to extract object signatures Process polygon intersection algorithm to identify the camera zones Generate and save the metadata Additional activities related to firmware and C++ development may include: Use Valgrind to debug memory leaks Debug socket, threading, and networking issues Create new SOAP/XML methods