OpenCV 学习1 - 读取、显示和写入图像

读取、显示和写入图像是图像处理和计算机视觉的基础。下面列出OpenCV内置的三个函数:

  1. imread() 读取图像
  2. imshow() 在窗口显示图像
  3. imwrite() 写入图像

pip安装opencv请参考这个链接和命令: Python pip使用简介和国内镜像下载

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/

1、imread() 读取图像和显示图像

  • 语法:imread(filename, flags)
  • 返回值:返回一个 NumPy 数组(numpy.ndarray 类型),表示图像的多维矩阵。若读取失败(如路径错误、文件不存在等),返回 None
  • filename:图像文件的路径(绝对路径或相对路径)。建议使用英文路径(不要特殊字符)以保证兼容性。
  • flags:可选参数,图像的解码方式,默认: cv2.IMREAD_COLOR。下面列出3个常用的,更多的请查阅手册。
常量 说明
cv2.IMREAD_UNCHANGED -1 不做任何修改地加载图像,包括透明通道(Alpha)和原始深度
cv2.IMREAD_GRAYSCALE 0 强制转换为灰度图(单通道)
cv2.IMREAD_COLOR 1 加载为彩色图像(三通道 BGR),忽略透明通道(默认)

代码示例 感兴趣的可以测试其它参数

python 复制代码
# 导入 OpenCV 库
import cv2
# 导入 os 库
import os

# 可以先看当前工作目录,避免写错相对路径
print("工作目录:", os.getcwd())

img_path = "img/dog.jpg"
if not os.path.exists(img_path):
    raise FileNotFoundError("未找到图像文件{img_path}")

img = cv2.imread(img_path, cv2.IMREAD_COLOR)

if img is None:
     print("读取图片失败")
     
else:
     # 显示图像
     cv2.imshow("Loaded Image", img)
     # 显示图像并等待用户按键关闭窗口
     cv2.waitKey(0)
     # 关闭所有由 OpenCV 创建的图像显示窗口
     cv2.destroyAllWindows()

2、imwrite() 写入图像

  • 语法:cv2.imwrite(filename, image, [params])
  • 返回值:True 或 False
  • filename:字符串,图像文件的路径(绝对路径或相对路径),扩展名决定保存格式(如 .jpg, .png, .bmp 等)
  • image:保存的图像数据(必须是 NumPy 数组,由 cv2.imread 或自定义数组生成)
  • params:list(可选),特定格式的编码参数,例如压缩质量等

代码示例 感兴趣的可以测试其它参数

python 复制代码
import cv2
import numpy as np

# 创建一个随机数生成器
rng = np.random.default_rng()
# 创建一个大小为720000的随机整数数组,范围为0到255
random_int_array = rng.integers(0, 255, size=720000, endpoint=True)

# 转换为灰度图像并写入文件
gray_img_array = random_int_array.reshape(800, 900)
cv2.imwrite('img/gray_img.png', gray_img_array)

# 转换为BGR图像并写入文件
bgr_img_array = random_int_array.reshape(400, 600, 3)
# 设置 JPEG 质量:0(最差)~ 100(最佳)
params = [int(cv2.IMWRITE_JPEG_QUALITY), 90]
success = cv2.imwrite('img/bgr_img.png', bgr_img_array, params)
if success:
    print('BGR 图像已写入文件')
else:
    print('BGR 图像写入文件失败')

3、waitKey()

建议读者查阅下waitKey函数

waitKey() 是 处理键盘事件和控制程序流程的函数。它通常与 cv2.imshow() 配合使用,用来控制图像窗口的显示时间,并响应用户的按键操作。

语法:key = cv2.waitKey([delay])

delay:等待用户按键的时间,整数(单位:毫秒),默认0

相关推荐
没有不重的名么1 天前
Multiple Object Tracking as ID Prediction
深度学习·opencv·计算机视觉·目标跟踪
愚者游世1 天前
Opencv知识点大纲
人工智能·opencv·计算机视觉
格林威1 天前
Baumer相机电池极耳对齐度检测:提升叠片工艺精度的 5 个实用方案,附 OpenCV+Halcon 实战代码!
人工智能·opencv·机器学习·计算机视觉·视觉检测·工业相机·堡盟相机
403240731 天前
【Jetson开发避坑】虚拟环境(Conda/Venv)调用系统底层OpenCV与TensorRT的终极指南
人工智能·opencv·conda
格林威1 天前
Baumer相机电机转子偏心检测:实现动平衡预判的 5 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·深度学习·opencv·机器学习·计算机视觉·视觉检测·工业相机
侯孟禹1 天前
Gemini写的抠图工具
qt·opencv
qwy7152292581631 天前
17-像素点和ROI操作
人工智能·opencv·计算机视觉
茶栀(*´I`*)1 天前
OpenCV实战:从视频读写到高级目标追踪(MeanShift与CamShift详解)
图像处理·opencv·计算机视觉
Qt学视觉2 天前
3D3-PCL全面总结
c++·opencv·3d
智驱力人工智能2 天前
景区节假日车流实时预警平台 从拥堵治理到体验升级的工程实践 车流量检测 城市路口车流量信号优化方案 学校周边车流量安全分析方案
人工智能·opencv·算法·安全·yolo·边缘计算