Open In App

OpenCV – imdecode() Function in Python

Last Updated : 09 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

cv2.imdecode() function is used to read image data from a memory cache and convert it into image format. This is generally used for loading the image efficiently from the internet. 

Example: Decoding and Saving an Image from URL in Color

This example demonstrates how to download an image from a URL, decode it in color, and save it locally.

Python
import numpy as np
import urllib.request
import cv2

url = 'https://media.geeksforgeeks.org/wp-content/uploads/20211003151646/geeks14.png'

with urllib.request.urlopen(url) as resp:
  
    i = np.asarray(bytearray(resp.read()), dtype="uint8")
    
    i = cv2.imdecode(i, cv2.IMREAD_COLOR)

    cv2.imwrite("result.jpg", i)

Output:

Explanation: The code fetches image data from a specified URL using urllib.request.urlopen(), converts it to a NumPy array, and decodes it using cv2.imdecode() with the cv2.IMREAD_COLOR flag to maintain the color information. The decoded image is then saved as a .jpg file using cv2.imwrite().

Syntax

cv2.imdecode(buf,flags)

Parameters:

  • buf – It is the image data received  in bytes
  • flags – It specifies the way in which image should be read. It’s default value is cv2.IMREAD_COLOR

Return Type:

  • If the input byte data is a valid image, the function returns a NumPy ndarray, representing the image in the specified color mode.
  • If buf given is not image data then NULL will be returned.

Examples of imdecode() Function

Example 1: Decoding and Saving an Image from URL in Grayscale

If grayscale is required, then 0 can be used as flag.

Python
import numpy as np
import urllib.request
import cv2

url = 'https://media.geeksforgeeks.org/wp-content/uploads/20211003151646/geeks14.png'

with urllib.request.urlopen(url) as resp:

    i = np.asarray(bytearray(resp.read()), dtype="uint8")
    
    i = cv2.imdecode(i, 0)
    
    cv2.imwrite("result.jpg", i)

Output:

Explanation: Similar to the first example, the image is fetched and converted into a NumPy array. However, in this case, cv2.imdecode() is used with the 0 flag, which decodes the image in grayscale. The resulting grayscale image is then saved as a .jpg file using cv2.imwrite().

Example 2: Reading image from a file

This code demonstrates how to read an image from a local file, decode it in grayscale, and display it using OpenCV.

Input Image:

Python
import numpy as np
import urllib.request
import cv2

with open("image.jpg", "rb") as i:
    f = i.read()

    i = np.asarray(bytearray(f), dtype=np.uint8)

    i = cv2.imdecode(i, 0) 

    cv2.imshow("output", i)
    cv2.waitKey(0)  
    cv2.destroyAllWindows()  

Output:

Explanation: The image is read from the local file image.jpg in binary mode, then converted into a NumPy array. The cv2.imdecode() function is used to decode the image into grayscale. The grayscale image is then displayed using cv2.imshow(), and the window remains open until a key is pressed.



Next Article
Article Tags :
Practice Tags :

Similar Reads