文章目录
一.安装与导入
安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
导入 import cv2
注意:
p y c h a r m pycharm pycharm 中安装 cv2 后可能出现 cv2 不提示方法的问题,如果你的 cv2 安装路径为 ‘…\venv\Lib\site-packages\cv2’,在 cv2 该文件夹下有一个 cv2.pyd 文件,复制这个文件到 ‘…\venv\Lib\site-packages’ 下,然后重启 p y c h a r m pycharm pycharm 即可。
二.读取图像
1.相关函数
retval = cv2.imread(filename[, flags])
读取图片- 返回值:
- retval:读取到的图像,未读取到时返回 None
- 输入参数:
- filename:要读取图像的完整文件名
- flags:读取标记,以何种形式来读取文件 。flag 具体值如下,输入时既可以输入值,也可以输入数值
- 返回值:
值 | 数值 | 含义 |
---|---|---|
cv2.IMREAD_UNCHANGED | -1 | 保持原格式不变(依然是BGR格式) |
cv2.IMREAD_GRAYSCALE | 0 | 将图像调整为单通道的灰度图 |
cv2.IMREAD_COLOR | 1 | 将图像调整为3通道的BGR格式(默认) |
cv2.IMREAD_ANYDEPTH | 2 | 当载入的图像深度为16或32位时返回其对应的深度图像,否则转换为8位图像 |
cv2.IMREAD_ANYCOLOR | 4 | 以任何可能的颜色格式读取图像 |
cv2.IMREAD_LOAD_GDAL | 8 | 使用gdal驱动程序加载图像 |
cv2.IMREAD_REDUCED_COLOR_2 | 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/2 | |
cv2.IMREAD_REDUCED_COLOR_4 | 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/4 | |
cv2.IMREAD_REDUCED_COLOR_8 | 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/8 | |
cv2.IMREAD_REDUCED_GRAYSCALE_2 | 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/2 | |
cv2.IMREAD_REDUCED_GRAYSCALE_4 | 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/4 | |
cv2.IMREAD_REDUCED_GRAYSCALE_8 | 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/8 |
2.示例
import cv2
bgr = cv2.imread('dog.jpg')
print(bgr)
三.显示图像
1.相关函数
cv2.namedWindow(winname)
----创建指定名称的窗口,窗口用于显示图片- winname:窗口名称
cv2.imshow(winname, img)
----显示图像- winname:窗口名称
- img:要显示的图片
retval = cv2.waitkey([delay])
----等待按钮,当用户按下键盘后该语句执行,并返回获取值- retval:返回值。如果有按键被按下,就返回按键的 ASCII 码,没有则返回-1
- delay:等待键盘触发的时间,单位ms。当 d e l a y ≤ 0 delay\leq0 delay≤0 时无限等待, d e l a y delay delay 默认为0。
cv2.destroyWindow(winname)
----销毁指定窗口- winname:窗口名称
cv2.destroyAllWindows()
----销毁所有窗口
2.示例
(1).显示图片
import cv2
bgr = cv2.imread('dog.jpg')
cv2.namedWindow('dog') # 创建窗口的这一步可以省略,省略时cv2.imshow('dog',bgr)会自己执行这一步
cv2.imshow('dog',bgr)
cv2.waitKey()
注意:opencv 读取到的图片默认情况下是 bgr 格式,但是使用 cv2.imshow 显示图片时它又会把 bgr 格式转回为 rgb 格式去显示。所以在读取图片后如果不进行格式转换,用 matplotlib 去显示图片时,图片将会是如下图的 bgr 格式。
cv2显示RGB格式 | matplotlib显示BGR格式 |
---|---|
(2).waitKey显示不同图片
import cv2
dog = cv2.imread('dog.jpg')
cat = cv2.imread('cat.jpg')
cv2.imshow('dog',dog)
key = cv2.waitKey()
if key == ord('A'):
cv2.imshow('another_dog',dog)
if key == ord('B'):
cv2.imshow('cat',cat)
cv2.waitKey()
程序会先显示一张狗的图片,按下A后显示 ‘dog’ 与 ‘another_dog’ 两个窗口,而按下B后显示 ‘dog’ 与 ‘cat’ 两个窗口。
(3).destroyWindow销毁指定窗口
import cv2
dog = cv2.imread('dog.jpg')
cv2.imshow('dog',dog)
cv2.waitKey()
cv2.destroyWindow('dog')
按下任意按键销毁 ‘dog’ 窗口。
(4).destroyAllWindows销毁所有窗口
import cv2
dog = cv2.imread('dog.jpg')
cv2.imshow('dog1',dog)
cv2.imshow('dog2',dog)
cv2.waitKey()
cv2.destroyAllWindows
按下任意按键销毁 ‘dog1’ 和 ‘dog2’ 窗口。
四.保存图像
1.相关函数
retval = cv2.imwrite(filename, img[, params])
- filename:要保存目标文件的完整路径文件名,包含扩展名
- img:要保存的图片名称
- retval :保存成功返回 True,失败返回 False
- params:保存类型参数,可选。默认为None
2.示例
import cv2
dog = cv2.imread('dog.jpg')
cv2.imwrite('res.png',dog)
默认读取图片后,保存图片功能也会将 bgr 转为 rgb 格式进行保存。
本文含有隐藏内容,请 开通VIP 后查看