JPEG-Image-Compressor
Batch-crop-images
Our great sponsors
JPEG-Image-Compressor | Batch-crop-images | |
---|---|---|
2 | 1 | |
38 | 71 | |
- | - | |
3.3 | 4.8 | |
4 months ago | 8 months ago | |
Python | Python | |
GNU General Public License v3.0 only | MIT License |
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.
Batch-crop-images
What are some alternatives?
PyVideoFramesExtractor - Extract frames from videos in Python using OpenCV.
opencv-steel-darts - Automatic scoring system for steel darts using OpenCV, a Raspberry Pi 3 Model B and two webcams.
toojpeg - A JPEG encoder in a single C++ file
Beginner-Traffic-Light-Detection-OpenCV-YOLOv3 - This is a python program using YOLO and OpenCV to detect traffic lights. Works in The Netherlands, possibly other countries
Osintgram - Osintgram is a OSINT tool on Instagram. It offers an interactive shell to perform analysis on Instagram account of any users by its nickname
SmoothStream - Webcam, PiCamera streaming over the network with Python made easy.
CheekyKeys - Use Python, OpenCV, and MediaPipe to control a keyboard with facial gestures
deffcode - A cross-platform High-performance FFmpeg based Real-time Video Frames Decoder in Pure Python 🎞️⚡