在 OpenCV 中,您可以使用imread轻松读取不同文件格式(JPG、PNG、TIFF 等)的图像。基本用法如下
C++
Mat imread(const string& filename, int flags=IMREAD_COLOR )
Python
image = cv2.imread(filename, flags=cv2.IMREAD_COLOR)
flags选项用于控制图像的读取方式。让我们看一些常见的例子。在下面的所有示例中,请确保为 C++ 使用正确的命名空间并为 Python 导入 OpenCV。
C++
using namespace cv;
Python
import cv2
绝大多数图像是每通道 8 位(或 24 位)图像。可以使用默认标志读取它们。
C++
Mat image = imread("image.jpg");
Python
image = cv2.imread("image.jpg")
C++
Mat image = imread("image.jpg", IMREAD_GRAYSCALE);
Python
image = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
大多数数码单反相机都能够以高于 8 位/通道的位深度记录图像。来自这些相机的原始图像可以转换为 16 位/通道 PNG 或 TIFF 图像。这些 16 位/通道图像可以使用C++读取
Mat image = imread("image.png", IMREAD_ANYCOLOR | IMREAD_ANYDEPTH);
Python
-
- im = cv2.imread("image.png", cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH)
您也可以改用标志 IMREAD_UNCHANGED。请参见下面的示例。
透明图像有四个通道——3 个用于颜色,1 个用于透明度。可以使用 IMREAD_UNCHANGED 标志在 OpenCV 中读取这些图像。
C++
Mat image = imread("image.png", IMREAD_UNCHANGED);
Python
im = cv2.imread("image.png", cv2.IMREAD_UNCHANGED)
注意: CV_LOAD_IMAGE_COLOR、CV_LOAD_IMAGE_GRAYSCALE、CV_LOAD_IMAGE_ANYCOLOR、CV_LOAD_IMAGE_ANYDEPTH 和 CV_LOAD_IMAGE_UNCHANGED 将在 OpenCV 的未来版本中删除