In OpenCV you can easily read in images with different file formats (JPG, PNG, TIFF etc.) using imread. The basic usage is shown below
Mat imread(const string& filename, int flags=IMREAD_COLOR )
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.
using namespace cv;
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.
Mat image = imread("image.jpg");
image = cv2.imread("image.jpg")
Read as 8-bit Grayscale Image
Mat image = imread("image.jpg", IMREAD_GRAYSCALE);
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
Mat image = imread("image.png", IMREAD_ANYCOLOR | IMREAD_ANYDEPTH);
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.
Mat image = imread("image.png", IMREAD_UNCHANGED);
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.