Hit*_*esh 3 python opencv matplotlib python-3.x
当我使用 matplotlib.image 读取灰度图像时,它显示尺寸 (512,512) 和类型 (float32),但是当我对同一图像使用 cv2.imread 时,它显示 (512,512,3) 并键入 uint8。为什么会这样?由于默认标志,cv2.imread 命令是否自动将图像转换为 BGR 格式。(我使用的是 python 3 和 opencv2。)以下是代码:
import cv2
import matplotlib.image as mpimage
img = cv2.imread('image_1.png')
img1=mpimage.imread('image_1.png')
Run Code Online (Sandbox Code Playgroud)
是的,默认情况下它读取 BGR,如果您想读取灰度图像,您需要使用 imread 中的第二个参数。从文档:
读取图像
使用函数 cv2.imread() 读取图像。图像应该在工作目录中,或者应该给出图像的完整路径。
第二个参数是一个标志,它指定应该读取图像的方式。
- cv2.IMREAD_COLOR :加载彩色图像。图像的任何透明度都将被忽略。它是默认标志。
- cv2.IMREAD_GRAYSCALE : 以灰度模式加载图像
- cv2.IMREAD_UNCHANGED : 加载图像,包括 alpha 通道 注意代替这三个标志,您可以分别简单地传递整数 1、0 或 -1。
请参阅下面的代码:
Run Code Online (Sandbox Code Playgroud)import numpy as np import cv2 #Load an color image in grayscale img = cv2.imread('messi5.jpg',0)
因此,如果您想在默认情况下读取灰度图像,则需要将 imread 中的第二个参数设为 1,而不是 0。对以下代码的细微更改应在两种情况下以相同的图像格式读取
import cv2
import matplotlib.image as mpimage
img = cv2.imread('image_1.png', 1)
img1=mpimage.imread('image_1.png')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6766 次 |
| 最近记录: |