How to convert YUV422 image to JPEG using ffmpeg's libraries? - visual-c++

I'm trying to convert a YUV422 image (YUV422_8_UYVY, unsigned ,unpacked, 16bpp) in to jpeg using ffmpeg's ,this is Code which I am following
Image size: 2448x2050
Original YUV Image: not able to upload as the format is YUV
(Original Image Decodec by ffmpeg command prompt)
Image:This is original Image
Image size: 2448x2050
reconstruct Image:Reconstruct Image through above Code
so the reconstruct image is not as the original image
my format is UYVY whereas supported format is AV_PIX_FMT_YUVJ420P
so what should be the correct format for UYVY input image...?
pCodecCtx->pix_fmt=AV_PIX_FMT_?????
if i use pCodecCtx->pix_fmt=AV_PIX_FMT_UYVY422;
i got an arrer saying
[mjpeg # 00c0b2a0] specified pixel format uyvy422 is invalid or not supported

You say the image format is "unpacked" (??), but at the same time you call it YUV422_8_UYVY, which suggests it's packed (i.e. not planar). The output you're getting suggests that it's packed.
FFmpeg's image encoders, in general, do not support packed input. You first need to make it planar. You have two options:
convert it to planar YUV-4:2:2 (AV_PIX_FMT_YUVJ422P) and input that into the encoder;
convert it to planar YUV-4:2:0 (AV_PIX_FMT_YUVJ420P) and input that into the encoder.
The first will preserve chroma subsampling (better quality), but the second will have better downstream support (in other applications, to decode the image). To convert the image, you use libswscale. The output image from that conversion can be input into the FFmpeg encoder.

Related

Decrypting Image Headers for WebP, JPEG XL, HEIF, AVIF image formats using Python

I want to decode and understand the structure of various latest image formats (namely WebP, JPEG XL, HEIF and AVIF) and compare header information with respect to image data to see which format is header information heavy with respect to image data. I was wondering how I can do this using Python.
Is there a simple way to decode various image file formats of the same image in either HEX or Binary and learn how much of the file contents is the image data and how much else is the header information? Better yet, is there a way to learn the breakdown of header information for various file formats??
So far I got to a point where I got a file to open in binary mode (Below is the sample code I have for the AVIF test image) but I'm not sure how I can decrypt, read and understand the structure. Googling around, I found some information for JPEG format (like the information shown on this page for JPEG https://yasoob.me/posts/understanding-and-writing-jpeg-decoder-in-python/) but none for WebP, HEIF, and AVIF on how I can read the binary format.
image = 'test.avif'
with open(image, 'rb') as image_file:
content = image_file.read()
Content
I wish to know how exactly can we extract the header information from the images while compression.

ZPL II decode Z64 (base64 and LZ77) to human readable text in Python

I am trying to put together an app in python that will split a .prn file generated from Zebra Designer software containing thousands of labels in one file into single label files. I need to extract a highlighted below field and decode it to human readable form to use as names for the single label files. I have tried to decode base64 and decompress LZ77 as per instructions here on page 1435 that states:
Z64 encoding do the following:
• Compress the data using the LZ77 algorithm.
• Encode the compressed data using the MIME Base64 algorithm.
• Calculate a CRC across the encoded data.
• Add a unique header to differentiate the new format from the existing ASCII hexadecimal encoding.
Below is part of the label I am trying to decode back to human readable form just the same way the printer does.
^XA
^MMT
^PW709
^LL0472
^LS0
^FO256,288^GFA,04992,04992,00052,:Z64:
eJztlL9uHDcQxoegExYp6MKlIr6GgayXKvwISZ9HSHnF4sTDFTbg4l7HgIAzDypUOl3K0LgipRi4ISCG45lZniMJNpIyCHYEaKXlfvzxmz8EWGKJJZZY4j8WF195b4vHBBrD8wbZHI9phDI2fSwAutEqNPoGd2EEKDBiYY0nTQSD8QWq7P68zgOsvsfNTQUwDXxVGMDhqziw5hwra1A4FtMPGIq/OxbieNze0vYOAzZNOzrcpc4RzWVljcFMuOzwwBz3+4EXHdKqEY1hzQTDpWjac9Z8q1lT/LsknFfHRhz/LrS9veVTbDNpaueoTOeO/PTmkNcuVuboQ/EAo92UJ3ZLX9gN4YnDP5SbRG9IQ8myqaxtqpw3Sptorgt0DeFhTaTaNS7QH78MJubJxIk45/qQHe1LZHByEmDN5U/1M8cH4ehUqk4jc8wxieaYZo0NhAdP1RENnctzLlYDbT7p6IhzZg7pAccGwj/QNIVvroRTdPJ7qU9yO/qPOF4VDDa0kRumiB/O2aTQYBl0FM5EeUOVnK2TZg5kjAbG0VaHWTjmfYKicYcnjm3EafS0zMlA9pjjmQNdg1llhZY54sdU4vwqnBWVif1gtMENxFGzhj7WRV3tXp/yZvecV53cm7dFf2iviXNFHLf/7q3dpNkPVpO4AKf6UN7KOaieN6znIPUxPBIqzWe7E40NzMlrM9cHqP2oZDohtwUvW9ZsuyZOnDoTsvixcRgUc7h3yN1l7fUxPE/bOPuJjdvNHsQP9XUbaQq3W+5rrtZnzp5+X3c/cWKNofmk+tA8TIMv7jeZH+LA0P24kT+K/WyjpXbTmISDND++0LzgzIGhczxrjifNwG2tMLIf95Hm1K8sboRDTofuZ6R+0zeh+xllFDAwx36k+2Bc2aZvaffKGuo31qyJo2/DyY9ozri3s7mJF8MZDa36EO9zDEys+QP6/Kxd+LnfdYXHaYQ+VrAWjcxpKJ0zz8LkYpwltCNnSv5kzWQCaTbzbA9sunNycXfpyxzKKFYuPnUAc/h6lHvnL8ps58AjjkdAud/AqDz+zVFImq9wRCOrBOPX7aTJ5sR57Mc14VBardzXJw1g0vz2SxzLGlm1uxNH7l7Xn7Mfc59D3JcXsvM3Cp7R40eAp/Ao8kPOv4p7fuI/fLrEEkssscQS/8/4BE9yVVQ=:BB36
^PQ1,0,1,Y^XZ
I tried to use python code like below just to decode this line "eJztlL9uHDcQxoegExYp(...)fLrEEkssscQS/8/4BE9yVVQ=" so i stripped the ZPL language coding which is :Z64: prefix and :BB36 CRC output.
Code comes from this thread.
import zlib
import base64
def decode_base64_and_inflate(b64string):
decoded_data = base64.b64decode(b64string)
return zlib.decompress(decoded_data, 0)
Output I get is as such:
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00#\x00\x00\x04\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xff\xf8\x7f\xff\x80\x00>\x03\xe0\xfe\x00\xf3\xf8\x07\x80?\x8e\x00\x00\x03\xfe\x00\x0f\xf8\x00\xfe\x00\x00\x0f\xff\x8f\x80>\x00\x00\xf8\x00>\xff\xf8\x00\x00\x00\x0f\xff\xf8\x7f\xff\xc0\x00?\x03\xc1\xff\x80w\xfc\x07\x80\x7f\xde\x00\x00\x07\xfe\x00?\xfc\x01\xff\x80\x00\x1f\xff\x87\xc0<\x00\x00\xf8\x00\x1e\xff\xfc\x00\x00\x00\x0f\xff\xf8\xff\xff\xc0\x00?\x83\xe3\xff\xc0\xff\xfe\x0f\x80\xff\xfe\x00\x00\x1f\xff\x80\xff\xfe\x03\xff\xc0\x00\x1f\xff\x8f\xe0>\x00\x00\xf8\x00>\xff\xfc\x00\x00\x00\x07\xff\xf0\x7f\xff\xc0\x00\x1f\x03\xc3\xff\xc0\x7f\x7f\x07\x81\xff\xfe\x00\x00\x1f\xff\x00\x7f\xfc\x07\xff\xc0\x00\x1f\xff\x07\xe0>\x00\x00|\x00<\x7f\xfc\x00\x00\x00\x0f\xff\xf8\x7f\xff\xc0\x00\x0f\x83\xe3\xef\xe0\xfe?\x0f\x83\xff\xfe\x00\x00?\xbf\x80\xfe\xbe\x0f\xef\xe0\x00\x0f\xff\x83\xf0>\x00\x00\xfc\x00>\xff\xfc\x00\x00\x00\x00\x01\xf0\x00\x0f\xc0\x00\x0f\xc3\xc3\x03\xf0|\x1f\x07\x81\xf0~\x00\x00>\x0f\x81\xf8\x04\x0f\x83\xf0\x00\x00\x0f\x81\xf0<\x00\x00|\x00|\x00|\x00\x00\x00\x00\x03\xf8\x00\x1f\x80\x00\x0f\xc3\xe2\x03\xf0\xf8\x0f\x8f\x83\xf0>\x00\x00>\x0f\xc3\xf8\x00\x0f\x83\xf0\x00\x00\x0f\x81\xf8>\x00\x00~\x00\xfc\x00\xfc\x00\x00\x00\x00\x07\xe0\x00\x1f\x00\x00\x07\xc7\xc0\x01\xf0p\x0f\x07\x83\xe0>\x00\x00|\x07\xc1\xf0\x00\x1f\x01\xf0\x00\x00\x07\x00\xf8>\x00\x00\x7fU\xfc\x00|\x00\x00\x00\x00\x0f\xe0\x00>\x00\x00\x03\xe3\xe0\x00\xf0\xf8\x0f\x0f\x83\xe0>\x00\x00|\x07\xe3\xe0\x00\x1f\x01\xf0\x00\x00\x0f\x80\xfc>\x00\x00?\xff\xf8\x00|\x00\x00\x00\x00\x1f\xc0\x00|\x00\x00\x01\xf3\xc0\x01\xf0x\x1f\x07\x83\xc0\x1e\x00\x00|\x07\xc1\xf0\x00\x1f\x01\xf0\x00\x00\x0f\x80|<\x00\x00?\xff\xf8\x00|\x00\x00\x00\x00?\x80\x00\xfc\x03\xfe\x03\xfb\xe0\x01\xf8\xff\xfe\x0f\x83\xe0>\x0f\xf8\xf8\x03\xe3\xe0\x00?\x01\xf8\xff\x80\x0f\x80\xfe>\x0f\xf8?\xff\xf8\x00\xfc\x00\x00\x00\x00?\x00\x01\xf8\x03\xff\x01\xf3\xc0\x01\xf0\x7f\xfc\x07\x83\xc0\x1e\x0f\xfc|\x03\xc1\xf0\x00\x1f\x00\xf0\xff\xc0\x07\x00>>\x0f\xfc\x1f\xff\xf0\x00|\x00\x00\x00\x00~\x00\x03\xf8\x03\xfe\x00\xff\xe0\x00\xf8\xff\xf8\x0f\x83\xe0>\x0f\xf8\xf8\x03\xe3\xf0\x00>\x00\xf8\xff\x80\x0f\x80?>\x0f\xf8?\x00\xf0\x00|\x00\x00\x00\x00|\x00\x03\xf0\x03\xff\x00\x7f\xc0\x01\xf0\x7f\xc0\x07\x83\xc0\x1e\x0f\xfcx\x03\xc1\xf8\x00\x1f\x01\xf0\xff\xc0\x0f\x80\x1f<\x0f\xfc\x1f\x01\xf0\x00|\x00\x00\x00\x00\xfc\x00\x0f\xe0\x03\xba\x00\xfb\xe0\x01\xf8\xf8\x00\x0f\x83\xe0>\x0b\xb8\xf8\x03\xe1\xfe\x88>\x00\xf8\xbb\x80\x0f\x80\x1f\xbe\x0b\xb8\x0f\x81\xe0\x00\xfc\x00\x00\x00\x01\xf8\x00\x07\xc0\x00\x00\x01\xf7\xc0\x01\xf0p\x00\x07\x83\xe0\x1e\x00\x00|\x07\xc1\xff\xfc\x1e\x00\xf0\x00\x00\x07\x00\x07\xfe\x00\x00\x0f\x01\xe0\x00|\x00\x00\x00\x03\xf8\x00\x0f\x80\x00\x00\x03\xe3\xe0\x03\xf0\xf8\x00\x0f\x83\xe0>\x00\x00\xf8\x03\xe0\xff\xfc>\x00\xf8\x00\x00\x0f\x80\x0f\xfe\x00\x00\x0f\x83\xe0\x00|\x00\x00\x00\x01\xf0\x00\x1f\x80\x00\x00\x03\xc3\xc1\x01\xf0x\x00\x07\x81\xf0~\x00\x00|\x03\xc0\x7f\xfc\x1f\x01\xf0\x00\x00\x0f\x80\x07\xfc\x00\x00\x07\x83\xc0\x00|\x00\x00\x00\x03\xf0\x00\x1f\x80\x00\x00\x0f\xe3\xe3\x8f\xe0\xfc\x0e\x0f\x83\xf8\xfe\x00\x00\xf8\x03\xe0?\xfc>\x00\xf8\x00\x00\x0f\x80\x0f\xbe\x00\x00\x0f\xc3\xe0\x00\xfc\x00\x00\x00\x03\xe0\x00\x1f\x00\x00\x00\x07\xc3\xc3\xff\xc0\x7f~\x07\x81\xff\xfe\x00\x00|\x03\xc0\x00<\x1e\x00\xf0\x00\x00\x07\x00\x1f>\x00\x00\x07\xc3\xc0\x00|\x00\x00\x00\x07\xe0\x00?\x00\x00\x00\x0f\x83\xe3\xff\xe0\x7f\xfe\x0f\x80\xff\xfe\x00\x00\xf8\x03\xe0\x00<>\x00\xf8\x00\x00\x0f\x80?>\x00\x00\x07\xe3\xc0\x00|\x00\x00\x00\x07\xc0\x00?\x00\x00\x00\x1f\x03\xc1\xff\x80?\xfc\x07\x80\xff\xde\x00\x00|\x07\xc0\x00<\x1f\x01\xf0\x00\x00\x0f\x80><\x00\x00\x03\xc7\x80\x00|\x00\x00\x00\x0f\xe0\x00?\x80\x00\x00?\x83\xe1\xff\x80?\xf8\x0f\x80\xff\xbe\x00\x00\xfc\x07\xc0\x00<?\x01\xf8\x00\x00\x0f\x80~>\x00\x00\x03\xef\x80\x00\xfc\x00\x00\x00\x07\xe0\x00?\x00\x00\x00\x04\x07\xc0|\x00\x07\xc0\x07\x80\x1c\x1e\x00\x00|\x07\xc0\x00<\x1f\x01\xf0\x00\x00\x07\x00|>\x00\x00\x03\xe7\x00\x00|\x00\x00\x00\x07\xe0\x00?\x80\x80\x00\x00\x03\xe0\x00\x00\x00\x00\x0f\x80\x00>\x00\x00~\x07\xc0\x00<\x1f\x83\xf0\x00\x00\x0f\x80\xf8>\x00\x00\x03\xef\x80\x00|\x00\x00\x00\x07\xf00?\x81\x80\x00\x00\x03\xc0\x00\x00\x00\x00\x07\x80\x00\x1e\x00\x00|\x07\x80\x00<\x1f\x81\xf0\x00\x00\x0f\x81\xf8<\x00\x00\x01\xff\x00\x00|\x00\x00\x00\x07\xfb\xf8?\xef\x80\x00\x00\x03\xe0\x00\x00\x00\x00\x0f\x80\x00>\x00\x00>\x0f\x80\xff\xfc\x0f\x83\xe0\x00\x00\x0f\x83\xf8>\x00\x00\x01\xff\x80\x00\xfc\x00\x00\x00\x03\xff\xf0\x1f\xff\xc0\x00\x00\x03\xc0\x00\x00\x00\x00\x07\x80\x00\x1e\x00\x00?\xff\x00\xff\xfc\x07\xff\xc0\x00\x00\x07\x01\xf0>\x00\x00\x01\xff\x00\x00|\x00\x00\x00\x03\xff\xf8\x1f\xff\x80\x00\x00\x03\xe0\x00\x00\x00\x00\x0f\x80\x00>\x00\x00?\xff\x00\xff\xfc\x0f\xff\xe0\x00\x00\x0f\x83\xe0>\x00\x00\x00\xfe\x00\x00|\x00\x00\x00\x01\xff\xf0\x0f\xff\x80\x00\x00\x03\xc0\x00\x00\x00\x00\x07\x80\x00\x1e\x00\x00\x1f\xfe\x00\xff\xfc\x07\xff\x80\x00\x00\x0f\x87\xc0<\x00\x00\x00\xfe\x00\x00|\x00\x00\x00\x00\xff\xe0\x0f\xfe\x00\x00\x00\x03\xe0\x00\x00\x00\x00\x0f\x80\x00>\x00\x00\x0f\xfe\x00\xff\xfc\x03\xff\x80\x00\x00\x0f\x8f\xe0>\x00\x00\x00\xfe\x00\x00\xfc\x00\x00\x00\x00\x7f\x00\x01\xf0\x00\x00\x00\x07\xc0\x00\x00\x00\x00\x07\x80\x00\x1e\x00\x00\x01\xf0\x00D#\x00|\x00\x00\x00\x05\x01\x00\x14\x00\x00\x00T\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xe0\x00\x00\x00\x00\x0f\x80\x00>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc0\x00\x00\x00\x00\x07\x80\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
When run the original label code through Labelary viewer it shows as text with some special charactes. How do I calculate this compressed text back to human readable form?
You can try to use this method to create the PNG:
https://codeutility.org/javascript-convert-zpl-base64-in-image-png-stack-overflow/

Reading RGB raw input, converting to openCV object, then converting to .JPEG bytes - without PIL

I am struggling to read raw RGB image stream from buffer, converting to openCV (numpy) array and encoding back to .jpg Bytes without using PIL. I can achieve this using PIL, but can't figure out how to achieve the same just using numpy/opencv:
Reading in RBG raw stream with PIL (works):
PILFr = Image.frombuffer('RGB',(768,576),buf,"raw",'RGB',0,1)
opencvPILFr = np.array(PILFr)
Attempting a similar read with openCV, I have:
FlatNp=np.frombuffer(buf,dtype=np.uint8, count=-1)
opencvPILFr=np.resize(FlatNp,(576,768))
re-encoding to buffer (self.frame) as JPEG bytes stream with PIL (works):
PILFr=Image.fromarray(cv2.cvtColor(opencvPILFr, cv2.COLOR_BGR2RGB))
tmp = io.BytesIO()
PILFr.save(tmp,format='jpeg', quality=100)
self.frame = tmp.getvalue()
Attempting to re-encode with openCV (does not work!):
tmp = io.BytesIO()
tmp=cv2.imencode(".jpg",opencvPILFr) #this returns a tuple? not numpy array?
self.frame=tmp.tobytes()
Help appreciated -I can see some reasons why the above WOULDN'T work...but can't see how to fix it.
I figured this out. Further improvements welcome. Still not entirely sure I understand the shape and contents of the imencode returned tuple.
See below my working numpy/opencv alternative to the PIL approach above:
Read in RBG 24bit image from buffer and convert to numpy array (opencvFr) for openCV:
FlatNp=np.frombuffer(buf,dtype=np.uint8, count=-1)
opencvFr=np.resize(FlatNp,(576,768,3))
Encoding the edited numpy image array (opencvFr) as JPEG bytes:
tmp=cv2.imencode('.jpg',opencvFr) #this returns a tuple.
self.frame=tmp[1].tobytes() #bytes containing compressed JPEG image
(I am experimenting with this for a streaming camera application)

How to define the input image format for imagemagick convert?

How to define the input image format for imagemagick convert, if convert -identify can't identify the input format by content, but I know it format well, and I can define it directly?
For example, I want to convert the svg file to png, but I have an example of valid svg which can't be identified by content.
Step to reproduce
Take this valid https://commons.wikimedia.org/wiki/File:Svg.svg
Rename file Svg.svg to image
Try to convert image image.png
Got the
convert.exe: NoDecodeDelegateForThisImageFormat ' # error/constitute.cReadImage/501.
ImageMagick version is 6.9.2-0 Q16 x86 2015-08-15
Like this - you need to tell ImageMagick what to expect with the svg: prefix as it can't work out what is coming from the extension since there isn't one:
curl https://upload.wikimedia.org/wikipedia/commons/1/15/Svg.svg > image
convert svg:image image.png

extract each frame from rtsp (mp4) stream

Im trying to extract each frame from a rtsp mp4 stream, and convert that into a jpeg/gif using ffmpeg. I'm getting the sdp header from 000001b0.....000001b5, and adding that into an byte array then capturing a frame starting from 000001b6 and appending it to the byte array.
When I flush it to a file (.mpg) and use ffmpeg it throws errors and not converting.
my header looks like 000001B008000001B58913000001000000012000C488BA98514043C1463F and after this I'm appending a frame (starting from 000001b6).
I did something similar with FFMPEG, and it seems that the frame data you get from FFMPEG already contains the frame header, which is all you need to transcode the data. Please make sure that you decode the mp4 data to a raw format (RGB24 for instance), then encode it to the pixelformat the JPEG/GIF encoder expects (probably a YUV format) using libswscale, before passing the data to the encoder.
Depending on the Codec you may not have to add anything or you may have to add a lot..
This is referred to as de-packetization and MPEG4-ES has no packetization model... H264 has many depending on the profile.
Check out the RFC..
Either 3016 or 3640 should help you.
https://www.rfc-editor.org/rfc/rfc3640
https://www.rfc-editor.org/rfc/rfc3016

Resources