JPEG-Image-Compressor
CheekyKeys
Our great sponsors
JPEG-Image-Compressor | CheekyKeys | |
---|---|---|
2 | 3 | |
38 | 164 | |
- | - | |
3.3 | 1.4 | |
4 months ago | about 1 year ago | |
Python | Python | |
GNU General Public License v3.0 only | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
JPEG-Image-Compressor
-
JPEG image compression algorithm using Python
To anyone interested in using JPEG's compression algorithm, I wrote a little program as a project for a course to do so. Here's the link to my repository on GitHub: https://github.com/mVirtuoso21/JPEG-Image-Compressor.git This Python program compresses raw images based on the JPEG compression algorithm. This program takes as input a raw image (eg: .bmp). The image is read using the OpenCV library in BGR color space, then converted to YCrCb. Each channel is normalized by subtracting 128. Then a 4: 2: 2 subsampling scheme is applied (another scheme can be used), by utilizing a 2 × 2 averaging filter on the chrominance channels (another type of filter can be used), thus reducing the number of bits per pixel to 8 + 4 + 4 = 16. Each channel is divided into 8 × 8 blocks – and is padded with zeros if needed. Each block undergoes a discrete cosine transform, where in the resulting block, the first component of each block is called the DC coefficient, and the other 63 are AC components. DC coefficients are encoded using DPCM as follows: , . AC components are encoded using run length in the following way: , , while using zigzag scan on the block to produce longer runs of zeros. An intermediary stream consists of encoded DC and AC components, and an EOB (end of block) to mark the end of the block. To achieve a higher compression rate, all zero AC components are trimmed from the end of the zigzag scan. A Huffman dictionary is created by calculating the frequency of each intermediary symbol. Since one image is to be sent in this project, the frequencies of the intermediary symbols will be calculated from those of this image (one can use a predefined Huffman dictionary). Each intermediary stream is encoded using its assigned codeword. The encoded bitstream is then written to an output file.
CheekyKeys
- CheekyKeys: A Face-Controlled Keyboard
-
Semaphore: A Full-Body Keyboard
Excellent, I'll reach out! Your balloon game looks a bit more like my face keyboard interface: https://github.com/everythingishacked/CheekyKeys#readme
- CheekyKeys: Lets you control your keyboard using your face
What are some alternatives?
Batch-crop-images - A tool for cropping similar images in a batch with an interface.
EyeDraw - Small computer vision software that allows you to draw with your own eyes
PyVideoFramesExtractor - Extract frames from videos in Python using OpenCV.
American-Sign-Language-Recognition - Recognise and Learn American Sign Language
toojpeg - A JPEG encoder in a single C++ file
iterative-grabcut - This algorithm uses a rectangle made by the user to identify the foreground item. Then, the user can edit to add or remove objects to the foreground. Then, it removes the background and makes it transparent.
Ai_Demos_RPi - Example code for using different Raspberry Pi boards with various electronic and mechanical components.
The-Machine - Person of Interest Machine
Doctor-Strange-Filter - Python project using OpenCV and Mediapipe to create a Dr. Strange filter. It detects hand gestures, calculates palm midpoint and openness, then overlays a mask if the hand is open. A concise demonstration of computer vision concepts like perspective and image rotation.
judo-dance-desktop - Practice judo techniques using a dancing pad.
dance-cat-to-mouse - Dance collaboratively the cat to catch the mouse.