Python OpenCV读取和保存图像

Python OpenCV读取和保存图像

OpenCV-python 是一个开源的Python计算机视觉库,它用于处理图像和视频以检测人脸和物体。它是Python中的一个图像处理库,并使用Python的Numpy库,以便所有图像数组都表示为ndarray类型。

使用pip安装OpenCV

Pip install opencv-python

OpenCV 需要 numpy 库,我们需要确保 numpy 库也已经安装好了。Python OpenCV 模块提供了 cv2.imread() 和 cv2.imwrite() 函数用来读取/加载和写入/保存图像文件。

在本文中,我们将会看到如何使用 Python OpenCV 模块来读取和保存图像文件。

cv2.imread() 函数

cv2.imread() 函数读取/加载图像并将其存储为一个 numpy 数组。

语法

Cv2.imread(filename[, flags])

参数

  • Filename: 需要加载的文件的名称/目的地。

  • Flags: 可以取ImreadModes的值的标志,指定加载图像的颜色类型。

返回值

  • 该方法返回一个Numpy数组。如果无法读取图像(因为文件丢失、权限不当或格式不支持/无效),此函数将返回一个空矩阵,而不是生成错误。

该函数通过使用内容来确定图像的类型,而不是通过扩展名。

支持的文件格式

  • Windows位图: *.bmp, *.dib

  • JPEG文件: *.jpeg, *.jpg, *.jpe

  • JPEG 2000文件: *.jp2

  • 便携式网络图形: *.png

  • WebP: *.webp

  • 便携式图像格式: *.pbm, *.pgm, *.ppm *.pxm, *.pnm

  • Sun射线: *.sr, *.ras

  • OpenEXR图像文件: *.exr

  • Radiance HDR: *.hdr, *.pic

注意:由GDAL支持的栅格和矢量地理空间数据

读取图像的算法

  • 导入cv2模块。
  • 使用cv2.imread()方法读取图像。
  • 使用cv2.imshow()方法在一个窗口中显示图像。
  • 使用cv2.waitKey(0)方法设置输出窗口的计时器。
  • 最后,使用cv2.destroyAllWindows()方法关闭输出窗口。

示例

让我们将一张图像作为输入。

#importing the opencv module  
import cv2  

# read image using imread('path') and 0 denotes read as grayscale image  
img = cv2.imread('input.jpg',0)

# display image
cv2.imshow('image',img)  

cv2.waitKey(0) 
cv2.destroyAllWindows()

输出

Python OpenCV读取和保存图像

示例

imread()函数将彩色图片存储在一个3D的ndarray中,行(高度) x 列(宽度)x 颜色(3)。让我们以一张彩色图片作为输入,并使用imread()函数读取它。

#importing the opencv module  
import cv2  

# read image 
img = cv2.imread('logo.png')

# display image
cv2.imshow('image',img)  
cv2.waitKey(0) 
cv2.destroyAllWindows()

print('Type:',type(img))
print('Shape:',img.shape)
print('datatype',img.dtype)

输出

Python OpenCV读取和保存图像

Type: <class 'numpy.ndarray'>
Shape: (225, 225, 3)
datatype uint8

图像对象img存储了形状为(225, 225, 3)的三维numpy数组。

The cv2.imwrite()函数

cv2.imwrite()函数按照指定的名称保存图像。文件扩展名和位置也是从函数的第一个参数选择的。

该函数返回一个布尔值,如果图像成功写入,则返回True;否则返回False。如果指定了不支持的图像格式,则会将图像转换为8位无符号(CV_8U)并以此方式保存。

以下是此函数的语法-

Cv2.imwrite(filename, img[, params])

在这里,

  • filename:要保存文件的名称/目的地。

  • img:它接收一个值的ndarray来保存图像。

  • params:以键值对编码的特定格式参数的列表。

示例

在这个示例中,我们将使用一个形状为(100,100,3)的零数组保存图像。

#import the numpay and opencv modules 
import numpy as np
import cv2

# create a 3-d numpy array
blank_image2 = np.zeros((100,100,3), dtype=np.uint8)

# save or create an image
cv2.imwrite("written_image.jpg", blank_image2)

输出

True

该函数返回布尔值 True,表示文件已成功写入/保存,并使用指定的名称。我们也可以在上面的输出块中看到名称为 written_image.jpg 的空白图像。

示例

在此示例中,我们将从图像文件夹读取 lenna.png 图像,然后使用 params 参数以最高质量重新写入它。

矩阵 [ cv2.IMWRITE_JPEG_QUALITY,100 ] 表示最高质量。而 0 表示最低质量,而默认值为 95。

#importing the opencv module  
import cv2  

# read image using imread('path') and 0 denotes read as grayscale image  
img = cv2.imread('input.jpg',1)

cv2.imshow('Input image',img)  
cv2.waitKey(0) 
cv2.destroyAllWindows()  

print('Type:',type(img))

status = cv2.imwrite('Images/Output_lenna_opencv_red_high.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 100])
print('Status:', status)

输入

Python OpenCV读取和保存图像

Type: <class 'numpy.ndarray'
Status: True
Details of the 

img对象的类型是ndarray。imwrite()函数成功地将图像保存在Images文件夹中,命名为 Output_lenna_opencv_red_high.jpg

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程