写入并储存图片
这篇教学会介绍 OpenCV 里的 imwrite() 方法,实现将图片另存新档 ( 也可转档 ) 的功能。
因为程序中的 OpenCV 会需要使用镜头或 GPU,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda ) ,并安装 OpenCV 函数库 ( 参考:OpenCV 函数库 )。
imwrite() 写入并储存图片
使用 imwrite() 方法,可以将处理好的数据内容写入并储存为图片,imwrite() 有三个参数,第一个参数为文件的路径和名称,第二个参数为要写入的数据内容,第三个参数为图片压缩质量的设定 ( 非必要,参考:ImwriteFlags )。
下方的程序码执行后,会先用“灰阶模式”打开一张图片,然后再将其存档为压缩质量 80 的 jpg 和套用默认值的 png 图档。
import cv2
img = cv2.imread('meme.jpg', cv2.IMREAD_GRAYSCALE) # 以灰階模式開啟圖片
cv2.imwrite('oxxostudio_2.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 80]) # 存成 jpg
cv2.imwrite('oxxostudio_3.png', img) # 存成 png
储存数组产生的图片
在 Python 里,图片可以使用“三维数组”的方式表现 ( 长宽各多少个像素、每个像素里包含的颜色信息是什么 ),因此如果提供特定格式的三维数组的数据,就能让 OpenCV 画出图形。
下面的范例使用 numpy 函数库,快速产生 500x500,每个项目为 [0,0,0] 的三维数组,接着再让数组中间的正方形区域的项目设定为 [0,0,255],呈现的就是一张 500x500 大小,黑色背景,中间 200x200 红色正方形的图形,最后使用 imwrite() 的方法,就能储存这张图片。
注意!OpenCV 里的颜色为“BGR”,并非 RGB,颜色色码为 0~255。
import cv2
import numpy as np
img = np.zeros((500,500,3), dtype='uint8') # 快速產生 500x500,每個項目為 [0,0,0] 的三維陣列
img[150:350, 150:350] = [0,0,255] # 將中間 200x200 的每個項目內容,改為 [0,0,255]
cv2.imwrite('oxxostudio.jpg', img) # 存成 jpg
cv2.imshow('oxxostudio', img) # 顯示圖片
cv2.waitKey(0) # 按下任意鍵停止
cv2.destroyAllWindows()
参考数据
- OpenCV:ImwriteFlags
微信扫码关注
抖音扫码关注