opencv python笔记

OpenCV课程

OpenCV其实就是一堆C和C++语言的源代码文件,这些源代码文件中实现了许多常用的计算机视觉算法。

  • OpenCV的全称是Open Source Computer Vision Library,是一个开放源代码的计算机视觉库
  • OpenCV最初由英特尔公司发起并开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用,现在美国Willow Garage为OpenCV提供主要的支持
  • OpenCV可用于开发实时的图像处理,计算机视觉以及模式识别程序,目前在工业界以及科研领域广泛采用

cv2.namedWindow 是 OpenCV 库中的一个函数,用于创建一个命名窗口,以便在该窗口中显示图像或进行其他图形操作。这个函数在处理图像和视频时非常有用,尤其是在开发基于图像处理的应用程序时。

opencv重要性

  • 计算机视觉:OpenCV 是计算机视觉领域的标准库之一,广泛应用于图像识别、物体检测、人脸识别、手势识别等。

  • 机器人技术:在机器人导航、环境感知和交互中,OpenCV 用于处理传感器数据和视觉信息。

  • 医学影像:在医学影像分析中,OpenCV 用于图像增强、分割和特征提取。

  • 自动驾驶:在自动驾驶汽车中,OpenCV 用于环境感知、障碍物检测和车道线识别。

  • 安全监控:在安全监控系统中,OpenCV 用于运动检测、人脸识别和行为分析。

    学习 OpenCV 不仅可以提升你的技术能力,还能为你在计算机视觉和图像处理领域的发展打开更多的门路。无论是学术研究、工业应用还是个人项目,OpenCV 都是一个不可或缺的工具

环境安装

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

显示窗口

cv2.namedWindow 是 OpenCV 库中的一个函数,用于创建一个命名窗口,以便在该窗口中显示图像或进行其他图形操作。这个函数在处理图像和视频时非常有用,尤其是在开发基于图像处理的应用程序时

函数原型

cv2.namedWindow(winname, flags=None)

参数说明

  • winname (str): 窗口的名称。这个名称必须是唯一的,因为它是用来标识窗口的。

  • flags (int, 可选): 窗口的标志,用于设置窗口的行为。默认值为

    cv2.WINDOW_AUTOSIZE
    

    。常见的标志包括:

    • cv2.WINDOW_NORMAL: 允许调整窗口大小。
    • cv2.WINDOW_AUTOSIZE: 窗口大小根据图像大小自动调整,不能手动调整。。

示例

以下是一个简单的示例,展示如何使用 cv2.namedWindow 创建一个窗口并在其中显示图像:

import cv2

# 读取图像
image = cv2.imread('images/car.png')

# 创建一个名为 "Image Window" 的窗口,允许调整大小
cv2.namedWindow('Image Window', cv2.WINDOW_NORMAL)

#2 设置名字和窗口大小
cv2.resizeWindow("Image Window",500,300)
# 显示图像
cv2.imshow('Image Window', image)

# 等待用户按键
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

详细解释

  1. 读取图像

    image = cv2.imread('path/to/your/image.jpg')
    

    使用 cv2.imread 函数读取图像文件。

  2. 创建窗口

    cv2.namedWindow('Image Window', cv2.WINDOW_NORMAL)
    

    使用 cv2.namedWindow 创建一个名为 “Image Window” 的窗口,并设置标志为 cv2.WINDOW_NORMAL,允许用户调整窗口大小。

  3. 显示图像

    cv2.imshow('Image Window', image)
    

    使用 cv2.imshow 在指定的窗口中显示图像。

  4. 等待用户按键

    cv2.waitKey(0)
    

    使用 cv2.waitKey 暂停程序执行,等待用户按键。参数 0 表示无限期等待,直到有按键事件发生。

    返回值:是一个ASCII值,

    例如:q 键 ASCII 值为 113 ESC 键是27

  5. 关闭所有窗口

    cv2.destroyAllWindows()
    

    使用 cv2.destroyAllWindows 关闭所有打开的窗口。

其他注意事项

  • 窗口名称:窗口名称必须是唯一的,否则会覆盖已有的同名窗口。
  • 窗口标志:选择合适的窗口标志可以提升用户体验,特别是在需要用户交互的场景中。

创建空白图像

你可以使用 np.zeros 函数创建一个全零数组,这个数组可以表示一个空白图像。数组的形状应该符合图像的尺寸和通道数(例如,对于 RGB 图像,形状应为 (height, width, 3)

函数写法

# 创建一个 500x500 像素的空白图像,3 个通道(RGB)
height, width, channels = 500, 500, 3
blank_image = np.zeros((height, width, channels), dtype=np.uint8)

案例:

import cv2
import numpy as np

# 创建一个 500x500 像素的空白图像,3 个通道(RGB)
height, width, channels = 500, 500, 3
blank_image = np.zeros((height, width, channels), dtype=np.uint8)

# 显示空白图像
cv2.imshow('Image', blank_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

保存图片

``cv2.imwrite` 是 OpenCV 库中的一个函数,用于将图像保存到文件中。这个函数在图像处理和计算机视觉任务中非常常用,特别是在需要将处理后的图像结果保存到磁盘时。

函数原型

cv2.imwrite(filename, img[, params])

参数说明

  • filename (str): 要保存的文件路径和名称。支持的文件格式包括 .jpg, .png, .bmp, .tiff 等。
  • img (numpy.ndarray): 要保存的图像。通常是一个二维或三维的 NumPy 数组,表示图像的像素值。

返回值

  • bool: 成功保存图像返回 True,否则返回 False

示例

以下是一个简单的示例,展示如何使用 cv2.imwrite 将图像保存到文件中:

import cv2

# 读取图片
img = cv2.imread("images/car.png")
# 保存图片
rs = cv2.imwrite("save_image/car.png", img)
if rs:
    print("图像保存成功!")
else:
    print("图像保存失败!")

其他注意事项

  • 文件路径:确保提供的文件路径是有效的,如果路径不存在,OpenCV 会尝试创建它,但如果权限不足则会保存失败。

图像切片(裁剪)

在 OpenCV 中,图像切片用于从图像中提取一个子区域(矩形区域)。这种操作在图像处理中非常常见,特别是在进行目标检测、ROI(Region of Interest,感兴趣区域)提取等任务时。

语法解释

假设你有一个图像 img,它的类型是 numpy.ndarrayimg[y:y+h, x:x+w] 的含义如下:

  • x: 子区域左上角的 x 坐标。
  • y: 子区域左上角的 y 坐标。
  • w: 子区域的宽度。
  • h: 子区域的高度。

切片操作

  • img[y:y+h, x:x+w] 提取的是从 (x, y) 开始,宽度为 w,高度为 h 的矩形区域。

示例

假设你有一个图像 img,并且你想要从这个图像中提取一个特定的矩形区域,例如左上角坐标为 (50, 60),宽度为 100,高度为 150 的区域。

import cv2

# 读取图像
img = cv2.imread('input_image.jpg')

# 定义矩形区域的参数
x, y, w, h = 50, 60, 100, 150

# 提取子区域
roi = img[y:y+h, x:x+w]

# 显示原始图像和提取的子区域
cv2.imshow('Image', img)
cv2.imshow('ROI', roi)

# 等待用户按键
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

原图片:
在这里插入图片描述

剪切后(注:以下的图片示例的x,y等参数与代码示例不同):
在这里插入图片描述

其他注意事项

  • 边界检查:确保 (x, y)(x+w, y+h) 都在图像的边界内,否则会导致数组索引越界错误。
  • 数据类型img 通常是 numpy.ndarray 类型,切片操作返回的也是 numpy.ndarray 类型。

调整图片大小

cv2.resize 是 OpenCV 库中的一个函数,用于调整图像的大小。这个函数在图像处理中非常常用,特别是在需要对图像进行缩放、放大或缩小以适应不同需求时。

函数原型

cv2.resize(src, dsize, dst)

参数说明

  • src (n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值