当前位置: 首页 > article >正文

计算帧率、每秒过多少次

1、c++

#include <iostream>
#include <opencv2/opencv.hpp>
#include <string>
#include <thread>
#include <atomic>

using namespace std;

const int NUM_THREADS = 1; // 线程数量

std::atomic<int> frameCounts[NUM_THREADS];  // 每个线程的帧计数
std::atomic<bool> running(true);            // 控制定时器的运行状态
std::mutex printMutex;

// 定时器函数,记录每个线程的FPS
void timer(int threadIndex) {
	while (running) {
		// 等待1秒
		std::this_thread::sleep_for(std::chrono::seconds(1));

		// 打印并重置当前线程的帧数
		int fps = frameCounts[threadIndex].exchange(0);
		{
			std::lock_guard<std::mutex> lock(printMutex);
			std::cout << "Thread " << threadIndex << " FPS: " << fps << std::endl;
		}
	}
}

int main() {
	std::thread t(timer, 0);
	t.detach();
	while (true) {
		frameCounts[0]++;
	}
	
	system("pause");
	return 0;
}

输出:

2、Python

from multiprocessing import Process, Lock, Value
import time

class Timer(Process):
    def __init__(self, lock, crt_time, last_time):
        super().__init__()
        self.current_time = current_time
        self.last_time = last_time
        self.lock = lock
    
    def run(self):
        while True:
            # 等待1s
            time.sleep(1)
            with self.lock:
                self.last_time.value = self.current_time.value
                print('----------num----------:', self.last_time.value)
                self.current_time.value = 0
            

if __name__ == '__main__':
    lock = Lock()
    # 使用 Value 创建共享变量
    current_time = Value('i', 0)  # 'i' 表示整数类型
    last_time = Value('i', 0)

    timer = Timer(lock, current_time, last_time)
    timer.start()
    while True:
        with lock:
            timer.current_time.value += 1

输出:


http://www.kler.cn/a/420122.html

相关文章:

  • 1、C++ 介绍
  • 【JavaEE初阶 — 网络编程】实现基于TCP协议的Echo服务
  • 【AI系统】Ascend C 语法扩展
  • 【第 1 章 初识 C 语言】1.8 使用 C 语言的 7 个步骤
  • 开源ISP介绍(1)——开源ISP的Vivado框架搭建
  • 柔性数组详解+代码展示
  • 数据结构实训——查找
  • mvc命令
  • 039集——渐变色之:CAD中画彩虹()(CAD—C#二次开发入门)
  • 12月2日星期一今日早报简报微语报早读
  • 如何实现一套键盘鼠标控制两台计算机(罗技Options+ Flow功能快速实现演示)
  • Ubuntu 20.04中的文件删除操作:详解与实用示例
  • AI运用落地思考:如何用AI进行物料条码的识别及异常检测?
  • 基于SpringBoot+Vue的美妆购物网站
  • 单片机学习笔记 17. 串口通信-发送汉字
  • 2024-11-30 二叉树的存储结构
  • Python语法1
  • .NET8/.NETCore 依赖注入:自动注入项目中所有接口和自定义类
  • HarmonyOS NEXT应用开发,关于useNormalizedOHMUrl选项的坑
  • ES6-14面试题
  • STM32G4系列MCU的Direct memory access controller (DMA)功能介绍之二
  • mysql 5.7安装及安装后无法启动问题处理
  • C++:unordered_map与unordered_set详解
  • 2-jsp-实现增删改功能
  • 【从0学英语】形容词性/名词性物主代词是什么?
  • 深入理解计算机系统,源码到可执行文件翻译过程:预处理、编译,汇编和链接