OpenCV Python图像读取与保存程序
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])
参数
文件名: 要加载的文件的名称/路径。
标志: 可以取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()
输出

示例
imread()函数将彩色图像存储在行(高度)x列(宽度)x颜色(3)的3D ndarray中。让我们以彩色图像作为输入,并使用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)
输出

Type: <class 'numpy.ndarray'>Shape: (225, 225, 3) datatype uint8
图像对象img存储了形状为(225, 225, 3)的3维NumPy数组。
cv2.imwrite()函数
cv2.imwrite()函数以指定的名称保存图像。文件名扩展名和位置也从函数的第一个参数中选择。
此函数返回布尔值,如果图像成功写入,则返回True,否则返回False。如果指定了不受支持的图像格式,则图像将转换为8位无符号(CV_8U)并以这种方式保存。
以下是此函数的语法:
Cv2.imwrite(filename, img[, params])
其中:
文件名: 要保存文件的名称/路径。
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的空白图像也显示在上面的输出块中。
示例
在这个例子中,我们将从Image文件夹读取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)
输入

Type: <class 'numpy.ndarray'Status: True Details of the
img对象的类型是ndarray。imwrite()函数成功地将图像Output_lenna_opencv_red_high.jpg保存到Images文件夹中。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP