打开并显示图片
这篇教学会介绍 OpenCV 里 imread()、imshow()、waitKey() 方法,透过这些方法,在电脑中使用不同的色彩模式打开图片并显示图片。
因为程序中的 OpenCV 会需要使用镜头或 GPU,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda ) ,并安装 OpenCV 函数库 ( 参考:OpenCV 函数库 )。
imread() 打开图片
使用 imread() 方法,可以打开图片,imread() 有两个参数,第一个参数为文件的路径和名称,第二个参数可不填,表示以何种模式 ( mode ) 打开图片,打开的图片支援常见的 jpg、png...等格式,下面是最基本打开图片的程序码。
import cv2
img = cv2.imread('meme.jpg') # 開啟圖片,預設使用 cv2.IMREAD_COLOR 模式
cv2.imshow('oxxostudio', img) # 使用名為 oxxostudio 的視窗開啟圖片
cv2.waitKey(0) # 按下任意鍵停止
cv2.destroyAllWindows() # 結束所有圖片視窗
如果设定第二个参数,就能使用不同的色彩模式打开图片 ( 色彩模式参考:色彩模式数字对照表 ),下面的程序码执行后,会以灰阶模式打开图片。
import cv2
img = cv2.imread('meme.jpg', cv2.IMREAD_GRAYSCALE) # 使用 cv2.IMREAD_GRAYSCALE 模式
# img = cv2.imread('meme.jpg', 2) # 也可使用數字代表模式
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
imshow() 显示图片
在上面的程序码中,使用了 imshow() 的方法显示图片,imshow() 包含两个参数,第一个参数为字串,表示要打开图片的视窗名称,第二个参数为使用 imread() 读取的图片。
waitKey() 等待多久关闭
使用 imshow() 方法时会搭配 waitKey(),waitKey() 表示等待与读取用户按下的按键,包含一个单位为“毫秒”的参数,如果设定 0 表示持续等待至用户按下按键为止,下方的程序码设定 waitKey 的参数为 2000,表示两秒后会关闭图片视窗 ( 两秒内如果按下 q 就会中止计时并关闭视窗 )。
如果遇到视窗无法关闭的状况,可以使用 destroyAllWindows() 的方法关闭所有视窗,或使用 destroyWindow(name) 关闭指定名称的视窗。
import cv2
img = cv2.imread('meme.jpg', cv2.IMREAD_GRAYSCALE) # 使用 cv2.IMREAD_GRAYSCALE 模式
cv2.imshow('oxxostudio', img)
cv2.waitKey(2000) # 等待兩秒 ( 2000 毫秒 ) 後關閉圖片視窗
cv2.destroyAllWindows()
色彩模式数字对照表
| 数字 | 模式 | 说明 |
|---|---|---|
| 1 | cv2.IMREAD_UNCHANGED | 原本的图像( 如果图像有 alpha 通道则会包含 )。 |
| 2 | cv2.IMREAD_GRAYSCALE | 灰阶图像。 |
| 3 | cv2.IMREAD_COLOR | BGR 彩色图像。 |
| 4 | cv2.IMREAD_ANYDEPTH | 具有对应的深度时返回 16/32 比特图像,否则将其转换为 8 比特图像。 |
| 5 | cv2.IMREAD_ANYCOLOR | 以任何可能的颜色格式读取图像。 |
| 6 | cv2.IMREAD_LOAD_GDAL | 使用 gdal 驱动程序加载图像。 |
| 7 | cv2.IMREAD_REDUCED_GRAYSCALE_2 | 灰阶图像,图像尺寸减小 1/2。 |
| 8 | cv2.IMREAD_REDUCED_COLOR_2 | BGR 彩色图像,图像尺寸减小 1/2。 |
| 9 | cv2.IMREAD_REDUCED_GRAYSCALE_4 | 灰阶图像,图像尺寸缩小 1/4。 |
| 10 | cv2.IMREAD_REDUCED_COLOR_4 | BGR 彩色图像,图像尺寸减小 1/4。 |
| 11 | cv2.IMREAD_REDUCED_GRAYSCALE_8 | 灰阶图像,图像尺寸缩小 1/8。 |
| 12 | cv2.IMREAD_REDUCED_COLOR_8 | BGR 彩色图像,图像尺寸减小 1/8。 |
| 13 | cv2.IMREAD_IGNORE_ORIENTATION | 不要根据 EXIF 信息的方向标志旋转图像。 |
参考数据
- OpenCV:imread()
- OpenCV:ImreadModes
微信扫码关注
抖音扫码关注