咸宁响应式网站建设价格,怎么查名字有没有被注册商标,百度图片识别在线使用,上海网站建设 润前言 本文分别介绍了使用 OpenCV 和 Matplotlib 进行图像读取与显示的方法#xff0c;如 cv2.imread ()、cv2.imshow ()、plt.imread ()、plt.imshow () 等#xff0c;并提及了使用 OpenCV 时的注意事项。
OpenCV与Matplotlib图像读取与显示的差异 图像读取#xff1a;
Op…前言 本文分别介绍了使用 OpenCV 和 Matplotlib 进行图像读取与显示的方法如 cv2.imread ()、cv2.imshow ()、plt.imread ()、plt.imshow () 等并提及了使用 OpenCV 时的注意事项。
OpenCV与Matplotlib图像读取与显示的差异 图像读取
OpenCV使用cv2.imread()函数读取图像默认读取的图像格式是BGR蓝绿红。Matplotlib使用plt.imread()函数读取图像默认读取的图像格式是RGB红绿蓝。
图像显示
OpenCV使用cv2.imshow()函数显示图像窗口会自动调整大小以适应图像。Matplotlib使用plt.imshow()函数显示图像可以通过设置figsize参数来调整图像的大小。 由于OpenCV默认读取的图像格式是BGR因此如果想要使用matplotlib来正常显示原来的图片需要对图片的格式进行转换因为matplotlib默认为RGB格式使用cv2.cvtColor()函数将其转换为RGB格式这部分的差异在下文会再次提到并且进行对比。
1、使用OpenCV对图像进行读取与显示
cv2.imread() cv2.imread()是 OpenCV 库中用于读取图像文件的函数。它可以将多种格式的图像文件如 JPEG、PNG、BMP 等读取到内存中以numpy.ndarray多维数组的形式存储图像数据方便后续的图像处理操作。基本语法为
cv2.imread(filename, flags cv2.IMREAD_COLOR)
filename这是一个必需的参数是一个字符串表示要读取的图像文件的路径。这个路径可以是绝对路径例如C:/Users/Username/Pictures/image.jpg也可以是相对路径例如./data/image.png其中./表示当前目录。flags这是一个可选参数用于指定读取图像的方式。它有多种取值常见的有 cv2.IMREAD_COLOR默认值以彩色模式读取图像。在这种模式下对于彩色图像它会忽略图像的透明度通道如果有的话将图像读取为 BGR蓝 - 绿 - 红格式的彩色图像。例如一张 RGB 格式的图像使用这个模式读取后会转换为 BGR 格式存储在numpy.ndarray中。cv2.IMREAD_GRAYSCALE以灰度模式读取图像。无论原始图像是彩色还是灰度读取后的图像都将是单通道的灰度图像每个像素点的值表示该点的灰度强度范围一般是 0 - 255。cv2.IMREAD_UNCHANGED按原始图像的格式读取包括图像的颜色模式和透明度通道如果有的话。如果原始图像是彩色且有透明度通道如 PNG 图像读取后的numpy.ndarray会有相应的通道来存储透明度信息。
cv2.imshow(): cv2.imshow()是 OpenCV库中的一个函数用于在窗口中显示图像。函数的基本语法如下
cv2.imshow(window_name, image)window_name这是一个字符串表示要显示图像的窗口的名称。这个名称是自定义的例如可以设置为 My Image、 Display Window等。image这是要显示的图像数据。通常是通过cv2.imread()函数读取的图像文件例如.jpg、.png等格式其数据类型一般numpy.ndarray。
注意事项
窗口大小:cv2.imshow()函数本身不会自动调整窗口大小以适应图像的尺寸。窗口大小通常会根据图像的尺寸和显示器的分辨率等因素来确定。如果图像很大可能会超出屏幕显示范围如果图像很小窗口可能会比较大而图像只占其中一部分。图像格式支持:cv2.imshow()支持多种图像格式如常见的 BGRBlue - Green - Red格式。如果图像是其他格式如 RGB可能需要进行格式转换才能正确显示。对于彩色图像OpenCV 默认采用 BGR 格式存储和处理图像。例如当使用cv2.imshow()读取一张彩色图像时得到的图像数据是 BGR 格式的。因此如果使用cv2.imshow()显示一张RGB格式图片时会与原图出现差异具体差异下方有示例。 具体的操作见下面的代码代码中有较为详细的注释。
# 导入模块
import cv2
from matplotlib import pyplot as pltimage_bgr cv2.imread(./luffy.jpeg, flags-1) #读取图像
image_rgb cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB) # 转换为RGB格式# 创建一个窗口并显示BGR图像
cv2.imshow(BGR Image, image_bgr)# 创建一个窗口并显示RGB图像
cv2.imshow(RGB Image, image_rgb)# 等待键盘输入并关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
使用cv2.imshow()图像的显示结果如下第一张为RGB显示图像第二张为BGR显示图像 大家可以自行对比一下。
2、使用Matplotlib对图像进行读取与显示
以下将Matplotlib简称为plt
plt.imread(): plt.imread()属于matplotlib库。它主要的功能是读取图像文件将图像数据加载到内存中以便后续使用matplotlib库进行图像的展示、处理等操作。基本语法为:
image_array plt.imread(fname, formatNone)
fname这是一个必需的参数是一个字符串表示要读取的图像文件的路径。和cv2.imread中的文件名参数类似它可以是绝对路径或者相对路径。例如绝对路径/home/user/images/picture.jpg或者相对路径../data/image.png..表示上级目录。format这是一个可选参数用于指定图像的格式。如果不指定matplotlib会根据文件扩展名自动尝试识别图像格式。它可以是如jpg、png、gif等常见的图像格式名称。不过在实际应用中一般很少手动指定这个参数因为matplotlib的自动识别功能已经很强大。
与 cv2.imread 的比较
格式差异如前面提到的plt.imread读取的彩色图像通常是 RGB 格式而cv2.imread默认读取的彩色图像是 BGR 格式。这在将图像数据用于不同的图像处理算法或者库时需要注意如果要在两个库之间传递彩色图像数据可能需要进行格式转换。功能侧重点差异cv2.imread主要用于为 OpenCV 库中的图像处理操作提供图像数据OpenCV 侧重于计算机视觉相关的功能如目标检测、图像滤波等。而plt.imread主要是为matplotlib库中的图像展示和简单的图形处理提供数据matplotlib更侧重于数据可视化和简单的绘图操作。
plt.imshow(): plt.imshow()是matplotlib库中的一个函数主要用于显示图像。它可以将各种类型的图像数据如二维数组表示的灰度图像、三维数组表示的彩色图像等以可视化的方式展示在图形界面或者输出设备如 Jupyter Notebook 等上。基本语法为
plt.imshow(X, cmapNone, normNone, aspectNone, interpolationNone, alphaNone, vminNone, vmaxNone, originNone, extentNone, filternorm1, filterrad4.0, imlimNone, resampleNone, urlNone, dataNone, **kwargs)
在常见的使用场景中只需要使用前面几个参数
X这是必需的参数代表要显示的图像数据通常是numpy.ndarray类型。对于灰度图像是一个二维数组对于彩色图像是一个三维数组例如 RGB 图像的形状通常是 (height, width, 3)。camp这是一个可选参数用于指定颜色映射colormap。颜色映射决定了如何将图像中的数值转换为实际显示的颜色。例如对于灰度图像默认的颜色映射是gray它会将像素值从黑到白进行映射。对于一些特殊的数据可视化如热度图可以使用hot颜色映射来显示数据的热度分布等。aspect这个参数用于控制图像的纵横比。例如aspectauto会自动调整图像的纵横比使图像能够完整地显示在给定的绘图区域内aspectequal则会保持图像的原始纵横比。
示例代码
# 导入模块
from matplotlib import pyplot as plt# 读取图像
image_rgb plt.imread(./luffy.jpeg)print(image_rgb.shape) # 高度宽度通道数
print(image_rgb.size) # 高度 x 宽度 x 通道数
print(image_rgb.dtype) # 数据类型plt.imshow(image_rgb)
plt.show() 图像结果如下 Over 散会