Graphical Applications Design

Graphical Applications Design with Computer Vision

Remote Monitoring & Control Systems

Overview

 A multi-timezone clock application that displays the time accurately. This is an example of a program built in Qt that will be covered in lecture.


Within this module participants will go through the process of developing GUI based applications in Qt that will teach the fundamentals of event driven programming, networking protocols, and an introduction to Computer Vision through the use of OpenCV.

This module builds on the previous Remote Monitoring & Control Systems modules and assumes previous exposure to at least one object-oriented programming language. However, it is not necessarily required to complete other modules before attempting this course, just note that there will be a large portion of catching up to do if you do not have experience with at least one programming language (preferably C or C++).


About The Module

This module is available as an independent study or for credit as CRSN 151C.

The syllabus is available for viewing and download to the right, while the lab manual will be available using your UCSC credentials once you are signed up for the course. The Lab manual(s) will provide participants with instructions and important terminology, as well as links to the needed software. Each project has its own prelab that must be completed before attending the relevant session. You'll be directed to online content and resources designed to give a basic understanding of what you'll be working on for that day, such as networking protocols or installing software necessary for that day’s lecture. A key component of the prelabs is the use of a lab notebook. Make sure to bring the notebook with any questions you may have on the relevant prelab content to each session; it is important that you understand these concepts. Each day of the module will cover a different topic and thoughts and musings must be recorded within the lab notebook.

Learning Outcomes:

By the end of this module, students will have demonstrated familiarity and ability in:

A ToDo application with the ability to use Dark Mode, custom icons, and normal Reminder capabilities. The application will give the students a basic understanding of Qt based applications

  • Become comfortable with contributing to a software stack as a group for companies in the engineering/technology industry.
  • Qt + GUI development basics necessary to construct high level GUI based applications.
  • Qt Networking functionality necessary for communication design.
  • Basic OpenCV/computer vision development.
  • Learn how to integrate OpenCV into Qt and utilize both frameworks together.
  • Understand and utilize C++ features that assist within graphical development.
  • Application of tools for project management (engineering notebook)

Project 1: Introduction to Qt

The Networking Chat application developed for Project 2. It contains the ability to communicate over text with other participants and discover other students on the same network.

This project introduces students to the use of the Qt GUI framework and concepts known as event driven programming through the development of a Task List/ToDo Sheet program. Students will become familiar with the necessary tools to work with a GUI based application and the simplest structure of generating your own custom UI elements. By the end of this project you will be able to build a program that allows users to add tasks, mark them as complete, edit them, and delete them.

Project 2: Qt Based Networking

This project introduces students to the concept of Networked applications, the Model/View paradigm, and building protocols through the development of a Networked Chat Application. Students will become familiar with the Client-Server architecture, device discoverability on local networks, and parsing network communications while reinforcing the ideas developed in Project 1. By the end of this project, you will be able to develop a program that allows for devices to communicate with each other over a text chat.

Project 3: OpenCV Development

The final challenge of the course will involve using OpenCV for facial recognition in a security camera application

This project introduces students to OpenCV, a library for programming computer vision. Students will learn to modify video/camera input in such a way that it provides useful data for object detection, image processing, etc. Students will do so by creating an object tracking application to recognize and follow a specified object in the video feed. This project teaches the fundamental concepts of openCV, such as thresholding, contours, and color manipulation. Upon completion, students will be able to use Qt to utilize OpenCV for basic computer vision, and how to build upon it for more advanced projects.

Location

The module is offered remotely via Zoom

Workshops are grouped into sessions which are available for sign up to the right. You may not sign up for individual sessions or split between different groups. Plan to attend all workshops in your session.

Before attending your workshop, please review the manual and complete the online training. You are required to complete the EH&S Lab Safety Fundamentals and the EH&S Electrical Safety in Research courses through the UC Learning website before beginning any work in the lab.

Resources