OpenCV 库创建了一个简单的动画

简介: OpenCV 库创建了一个简单的动画

image.png

image.png

import cv2, time
import numpy as np

width, height = 200, 200
r = 20
x = r + 20
y = r + 100
x_offer = y_offer = 4
while cv2.waitKey(1) == -1:
    if x > width - r or x < r:
        x_offer *= -1
    if y > height - r or y < r:
        y_offer *= -1
    x += x_offer
    y += y_offer
    img = np.ones((width, height, 3), np.uint8) * 255
    cv2.circle(img, (x, y), r, (255, 0, 0), -1)
    cv2.imshow("img", img)
    time.sleep(1 / 60)
cv2.destroyAllWindows()

使用 OpenCV 库创建了一个简单的动画,显示了一个红色的球(或圆圈)在白色背景上以弹跳的方式移动。下面是代码的逐行解释:

  1. import cv2, time:
    导入 OpenCV 库和 time 模块。OpenCV 用于图像处理和视频捕获,time 用于控制动画的帧率。

  2. import numpy as np:
    导入 NumPy 库,它在图像处理中广泛用于数组操作。

  3. width, height = 200, 200:
    设置图像的宽度和高度,都为 200 像素。

  4. r = 20:
    设置圆的半径为 20 像素。

  5. x = r + 20:
    设置圆心的初始 x 坐标为半径加上 20 像素,以确保圆完全显示在图像内。

  6. y = r + 100:
    设置圆心的初始 y 坐标为半径加上 100 像素。

  7. x_offer = y_offer = 4:
    设置 x 和 y 方向上的初始速度(步长),这里都为 4 像素/帧。

  8. while cv2.waitKey(1) == -1:
    开始一个无限循环,循环的条件是用户没有按下任何键(cv2.waitKey(1) 返回 -1 表示没有按键输入)。

9-10. if x > width - r or x < r: x_offer *= -1:
如果 x 坐标超出了图像的宽度减去半径的范围,或者小于半径,就反转 x 方向上的速度。

11-12. if y > height - r or y < r: y_offer *= -1:
如果 y 坐标超出了图像的高度减去半径的范围,或者小于半径,就反转 y 方向上的速度。

  1. x += x_offer:
    根据 x 方向上的速度更新 x 坐标。

  2. y += y_offer:
    根据 y 方向上的速度更新 y 坐标。

  3. img = np.ones((width, height, 3), np.uint8) * 255:
    创建一个新的白色背景图像,图像大小为 widthxheight,颜色通道为 3(RGB),所有像素点的值都初始化为 255(白色)。

  4. cv2.circle(img, (x, y), r, (255, 0, 0), -1):
    在白色背景图像上绘制一个半径为 r 的红色圆,圆心坐标为 (x, y),颜色为红色 (255, 0, 0)-1 表示填充整个圆。

  5. cv2.imshow("img", img):
    显示图像 img,窗口标题为 "img"。

  6. time.sleep(1 / 60):
    暂停当前线程 1/60 秒,以控制动画的帧率为 60 FPS(每秒 60 帧)。

  7. cv2.destroyAllWindows():
    当用户按下按键时,结束显示所有 OpenCV 创建的窗口。

目录
相关文章
|
11月前
|
监控 计算机视觉 Python
用Python和OpenCV库实现识别人物出现并锁定
用Python和OpenCV库实现识别人物出现并锁定
226 0
|
2月前
|
机器学习/深度学习 人工智能 算法
Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。
【7月更文挑战第5天】Python在计算机视觉(CV)中扮演重要角色,得益于其丰富的库如OpenCV、Pillow和Scikit-image。CV涉及图像处理、模式识别和机器学习,用于图像理解和生成。Python的跨平台特性和活跃社区使其成为CV的理想工具。基本流程包括图像获取、预处理、特征提取、分类识别及图像生成。例如,面部识别通过预处理图像,使用如`cv2.CascadeClassifier`进行检测;物体检测类似,但需适应不同目标;图像生成则利用GAN创造新图像。
46 4
|
2天前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
10 3
|
3月前
|
Windows 计算机视觉 Linux
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
该文档介绍了Qt的跨平台特性,并推荐在Windows和Linux开发中使用QtCreator。在Windows下添加动态库,可以通过Visual Studio配置.lib文件和.dll文件,或在QtCreator中使用&quot;添加库&quot;功能。在QtCreator中,选择库文件、包含路径,并配置Details,然后更新.pro文件,清除、qmake及构建项目。运行时确保.dll与.exe在同一目录下。
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
|
4月前
|
Linux 开发工具 计算机视觉
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
Qt是跨平台的开发工具,推荐使用QtCreator进行Windows和Linux开发。在Windows下,使用Visual Studio创建动态库时,需要配置.lib文件并确保运行时.dll与.exe在同一目录。在QtCreator中添加DLL动态库,可以通过右键项目,选择添加库,然后在Details界面配置库文件、包含路径和平台,最后更新PRO文件并进行清除、qmake和构建步骤。运行时同样需确保.dll文件与可执行文件在同一目录。
138 5
|
3月前
|
机器学习/深度学习 编译器 算法框架/工具
OpenCV算法库
numba是一个用于编译Python数组和数值计算函数的编译器,这个编译器能够大幅提高直接使用Python编写的函数的运算速度。
|
4月前
|
机器学习/深度学习 监控 算法
开源计算机视觉库OpenCV详解
开源计算机视觉库OpenCV详解
|
4月前
|
存储 算法 数据可视化
|
4月前
|
编译器 计算机视觉 Python
pycharm配置opencv库
pycharm配置opencv库
|
4月前
|
机器学习/深度学习 监控 算法
开源计算机视觉库OpenCV详解
开源计算机视觉库OpenCV详解
91 3