In OpenCV you can easily read in images with different file formats (JPG, PNG, TIFF etc.) using imread. The basic usage is shown below
C++
Mat imread(const string& filename, int flags=IMREAD_COLOR )
Python
image = cv2.imread(filename, flags=cv2.IMREAD_COLOR)
The flags option is used to control how the image is read. Let’s look at some common examples. In all the examples below, make sure you use the right namespace for C++ and import OpenCV for Python.
C++
using namespace cv;
Python
import cv2
Read as 8-bit / channel Color Image ( without Alpha Channel)
A vast majority of images are 8-bit per channel ( or 24-bit ) images. They can be read using default flags.
C++
Mat image = imread("image.jpg");
Python
image = cv2.imread("image.jpg")
Read as 8-bit Grayscale Image
C++
Mat image = imread("image.jpg", IMREAD_GRAYSCALE);
Python
image = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
Read 16-bit / channel Color Image
Most digital SLR cameras are capable of recording images at a higher bit depth than 8-bits / channel. The raw images from these cameras can be converted to 16-bit / channel PNG or TIFF images. These 16-bit / channel images can be read using
C++
Mat image = imread("image.png", IMREAD_ANYCOLOR | IMREAD_ANYDEPTH);
Python
im = cv2.imread("image.png", cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH)
You may also use the flag IMREAD_UNCHANGED instead. See an example below.
Read a Transparent PNG or TIFF in OpenCV
A transparent image has four channels — 3 for color, and one for transparency. These images can be read in OpenCV using the IMREAD_UNCHANGED flag.
C++
Mat image = imread("image.png", IMREAD_UNCHANGED);
Python
im = cv2.imread("image.png", cv2.IMREAD_UNCHANGED)
NOTE : CV_LOAD_IMAGE_COLOR, CV_LOAD_IMAGE_GRAYSCALE, CV_LOAD_IMAGE_ANYCOLOR, CV_LOAD_IMAGE_ANYDEPTH, and CV_LOAD_IMAGE_UNCHANGED will be removed in future versions of OpenCV.