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 创建的窗口。

目录
相关文章
|
7月前
|
监控 计算机视觉 Python
用Python和OpenCV库实现识别人物出现并锁定
用Python和OpenCV库实现识别人物出现并锁定
147 0
|
17小时前
|
编译器 计算机视觉 Python
pycharm配置opencv库
pycharm配置opencv库
|
17小时前
|
机器学习/深度学习 监控 算法
开源计算机视觉库OpenCV详解
开源计算机视觉库OpenCV详解
45 3
|
17小时前
|
存储 算法 数据可视化
|
9月前
|
编译器 C++ 计算机视觉
VS+OpenCV字符动画ikun打篮球
VS+OpenCV字符动画ikun打篮球
78 0
|
17小时前
|
定位技术 计算机视觉 C++
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
|
17小时前
|
监控 计算机视觉
[MFC] 绘制图像ROI区域(OpenCv库)
[MFC] 绘制图像ROI区域(OpenCv库)
39 0
|
17小时前
|
前端开发 计算机视觉 Python
OpenCV中绘制运动的小球动画,
要在OpenCV中绘制运动的小球动画,并且将动画显示在Python GUI窗口内,可以按照以下步骤进行:
53 2
|
5月前
|
计算机视觉 Python
OpenCV中绘制文字和运动的小球动画
要在OpenCV中绘制文字和运动的小球动画,可以使用以下方法: 1. 导入所需库:
75 8
|
9月前
|
存储 计算机视觉 数据格式
OpenCV库、Armadillo库矩阵数据格式互转的方法
本文介绍在C++语言中,矩阵库Armadillo的mat、vec格式数据与计算机视觉库OpenCV的Mat格式数据相互转换的方法~
OpenCV库、Armadillo库矩阵数据格式互转的方法