目录
导入cv2
# 导入opencv包
import cv2
读取图像数据
cv2.imread(path, flag)
参数说明: path:要读取的图像文件的路径。 flag(可选):指定图像的读取方式。它可以是以下标志之一: cv2.IMREAD_COLOR(默认值):以彩色图像形式读取图像,忽略任何透明度。 cv2.IMREAD_GRAYSCALE:以灰度图像形式读取图像。 cv2.IMREAD_UNCHANGED:以包含Alpha通道(如果存在)的形式读取图像。 返回值: 如果成功读取图像,imread()函数将返回一个表示图像数据的NumPy数组对象。 如果无法读取图像(例如文件路径错误或文件格式不支持),则返回None。
# 读取图像数据,保存到image变量里
image = cv2.imread(path, cv2.IMREAD_COLOR)
创建一个窗口
# 创建一个自动调整大小的新窗口 cv2.namedWindow('new', cv2.WINDOW_AUTOSIZE) cv2.imshow('new', 0)
# 创建一个具有可调整大小的新窗口 cv2.namedWindow('new', cv2.WINDOW_NORMAL) # 将窗口大小调整为指定的宽度和高度(这里是1920x1080) cv2.resizeWindow('new', 1920, 1080)
# 创建一个名为new的显示窗口,并显示图像数据 cv2.imshow('new', image)
waitKey方法
# 等待键盘输入,waitKey方法表示等待按键, 会返回按键的ascii的值 # 0表示任何按键, 其他整数表示等待按键的时间,单位是毫秒, 超过时间没有发生按键操作窗口会自动关闭. # ord获得字符的ascii的值,可以据此判断输入的字符,然后进行进一步操作
python
Key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
cv2.destroyAllWindows()
# 如果输入的是q key & 0xFF将保留key的低八位(即最后8个二进制位),相当于对256取余。
关闭所有窗口
python
cv2.destroyAllWindows()
完整示例
python
import cv2
# 展示图片
def show_image(path):
# 读取图像数据,保存到image变量里
image = cv2.imread(path, cv2.IMREAD_COLOR)
# 检查图像是否成功读取
if image is not None:
# 创建一个自动调整大小的新窗口
cv2.namedWindow('new', cv2.WINDOW_AUTOSIZE)
cv2.imshow('new', 0)
# 创建一个具有可调整大小的新窗口
cv2.namedWindow('new', cv2.WINDOW_NORMAL)
# 将窗口大小调整为指定的宽度和高度(这里是1920x1080)
cv2.resizeWindow('new', 1920, 1080)
# 创建一个名为new的显示窗口,并显示图像数据
cv2.imshow('new', image)
# 等待键盘输入,waitKey方法表示等待按键, 会返回按键的ascii的值
# 0表示任何按键, 其他整数表示等待按键的时间,单位是毫秒, 超过时间没有发生按键操作窗口会自动关闭.
Key = cv2.waitKey(0)
# ord获得字符的ascii的值,可以据此判断输入的字符,然后进行进一步操作
# if key & 0xFF == ord('q'): # 如果输入的是q key & 0xFF将保留key的低八位(即最后8个二进制位),相当于对256取余。
if Key:
# 关闭所有窗口
cv2.destroyAllWindows()
print(f'{path}的图像成功读取')
return 0
else:
print("无法读取图像")
return -1
show_image('1.jpg')
保存图片
cv2.imwrite("路径名称",要保存的图像(NumPy数组对象))
python
img=cv2.imread('img.jpg')
cv2.imwrite("./123.png", img)
示例
python
# 保存图片
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('img', 320, 240)
img = cv2.imread("images/5.jpg")
# 利用while循环优化退出逻辑
print("开始保存图片,按esc键退出")
while True:
cv2.imshow('img', img)
key = cv2.waitKey(0)
if key & 0xFF == 27:
break
elif key & 0xFF == ord('s'):
# 使用imwrite保存图片
cv2.imwrite("./123.png", img)
print("图片保存成功")
else:
print(key)
cv2.destroyAllWindows()