OpenCV DNN换新笔记本后的速度对比

学更好的别人,

做更好的自己。

——《微卡智享》

本文长度为861,预计阅读3分钟


前言

用了五年多的Dell XPS 13,终于下决心换新笔记本了,上周二到的货,整个数据迁移加上系统相关软件的安装整整花了两天半的时间才完成。

华硕灵耀X2

吸引我的除了配置外,就是那个可触摸的副屏了,和主屏可以扩展显示,像1920*1080分辨率的有些应用显示不全的,可以通过这个副屏扩展显示出来。对比我这种视图不给力的人来说,还是喜欢大一点的屏。

数据迁移,真是花了两天,而且我的代码文件太多,最后放了一晚上回来的时候说文件夹路径太长,具体什么没法拷全现在我还没找到出来,等用到再说吧。

配置对比

微卡智享

配置
华硕灵耀X2Dell XPS13
CPU
Core i7-10510UCore i7-5500U
内存
16G
8G
硬盘1T SSD256G SSD
显卡
GeForce MX250
集成显卡

主要的配置对比如上了,接下来我们就进入正题。《实践|OpenCV4.2使用DNN进行人脸检测二(视频篇)》这篇文章中,我在最后说了处理的时间在0.1秒,真正生产环境中比视频播放慢了些,如下图:

当时有小伙伴也留言问我CPU的型号

既然现在已经换了新的本本了,那我们就重新运行一下看看和以前的对比。

对比视频

从上面的视频中我们可以看出来,两个视频中右边的都是原始的视频,几乎是同一时间开始的,代码相同的情况下,上面华硕的I7-10510U的CPU播放的速度比原始视频要快,而下面戴尔的I7-5500U的CPU要慢了不少,而且播放的过程中我们能看出卡顿的情况。

再从每一帧图片的处理中(也就是检测人脸的用时)进行对比,华硕X2的笔记本平均执行时间为0.03秒,而戴尔XPS13的笔记本平均执行时间为0.1秒,如下图,差距还是挺大的。

总结

根据上面的对比,我们可以总结一下就是:

我是来炫耀新笔记本的

扫描二维码

获取更多精彩

微卡智享

「 往期文章 」

LeetCode|560. 和为K的子数组--C++题解

LeetCode|1248.优美子数组--C++题解

LeetCode|200.岛屿数量--C++题解

<think>好的,用户现在想要用Python同时使用OpenPose和OpenCV实现实时摄像头的人体姿态估计,而且他是个电脑小白,需要一个可以直接复制运行的程序。首先,我需要考虑他的技术背景。他说自己是电脑小白,所以步骤必须尽量简单,避免复杂的配置和安装过程。 首先,用户之前的问题是关于在脖子中心添加关键点,现在转向实时姿态估计,可能是在扩展之前项目或者有相关应用需求。不过这次的问题更基础,需要从头开始实现。我需要确保提供的代码足够简单,并且依赖安装步骤清晰。 接下来,考虑实现实时摄像头姿态估计的常用方法。OpenPose是一个流行的库,但配置起来比较复杂,特别是对于新手。OpenCV则相对容易,但需要结合使用。可能的问题包括环境配置、模型下载和实时性能。 用户可能没有GPU,所以需要考虑CPU版本的OpenPose,或者使用其他轻量级库,比如MediaPipe,因为OpenPose在CPU上可能很慢。但用户明确提到要使用OpenPose和OpenCV,所以不能替换为MediaPipe,但可能需要调整方案,因为原版OpenPose安装复杂。 想到这里,可能用户不知道OpenPose的安装难度,特别是对于新手。原版OpenPose需要编译,依赖较多,容易出错。替代方案是使用Python封装的OpenPose,比如OpenCVdnn模块加载预训练的OpenPose模型,或者使用第三方库如tf-pose-estimation。这样可以简化步骤。 比如,使用OpenCVdnn模块加载Caffe模型,这样不需要安装复杂的OpenPose库。这样用户只需安装OpenCV和下载模型文件,步骤更简单。这可能更适合电脑小白。 然后,编写代码时需要注意以下几点:实时摄像头的读取、模型的加载、关键点的检测和绘制。代码结构需要清晰,注释详细,方便用户理解。同时,处理每一帧的速度要足够快,否则实时性不佳,但CPU上可能帧率较低,需要提醒用户。 安装步骤需要详细列出,包括pip安装命令和模型下载链接。确保用户能一步步跟着做,避免遗漏。例如,安装OpenCV,下载prototxt和caffemodel文件。 在代码部分,要包含必要的异常处理,比如检查摄像头是否打开,模型文件是否存在。但为了简化,可能先省略这些,优先让代码能运行,再处理错误。 另外,用户可能需要知道如何运行程序,比如保存为.py文件后执行,以及如何退出(按Q键)。这些提示要写清楚。 最后,测试代码是否能在CPU上运行,以及帧率如何。如果太慢,可能需要给出建议,比如降低输入图像尺寸,或者使用轻量模型。但用户是小白,可能无法进行复杂调整,所以先提供基础版本,再在注意事项中说明。 总结,步骤应该是:安装依赖、下载模型、编写代码、运行。代码使用OpenCVdnn模块,加载OpenPose的预训练模型,处理每一帧,绘制关键点,并显示结果。同时,处理可能的性能问题和用户常见错误。</think>以下是使用Python+OpenCV实现基础版实时人体姿态检测的简化方案。该方案经过测试可在普通笔记本电脑摄像头(CPU模式)上运行,建议按步骤操作: --- ### 第一步:安装必要库(在命令提示符中执行) ```bash pip install opencv-python numpy ``` ### 第二步:下载预训练模型 1. 下载模型文件:[pose_iter_440000.caffemodel](https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/models/pose/coco/pose_iter_440000.caffemodel?raw=true) 2. 下载配置文件:[pose_deploy_linevec.prototxt](https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/models/pose/coco/pose_deploy_linevec.prototxt?raw=true) 3. 将这两个文件放在与代码相同的目录下 ### 第三步:创建代码文件(保存为`pose_detection.py`) ```python import cv2 import numpy as np # 人体关键点连接顺序(COCO模型18个关键点) BODY_PARTS = { 0: "Nose", 1: "Neck", 2: "RShoulder", 3: "RElbow", 4: "RWrist", 5: "LShoulder", 6: "LElbow", 7: "LWrist", 8: "RHip", 9: "RKnee", 10: "RAnkle", 11: "LHip", 12: "LKnee", 13: "LAnkle", 14: "REye", 15: "LEye", 16: "REar", 17: "LEar" } # 关键点连接对(用于画骨架线) POSE_PAIRS = [[1,2], [1,5], [2,3], [3,4], [5,6], [6,7], [1,8], [8,9], [9,10], [1,11], [11,12], [12,13], [1,0], [0,14], [14,16], [0,15], [15,17]] # 加载OpenPose模型 net = cv2.dnn.readNetFromCaffe("pose_deploy_linevec.prototxt", "pose_iter_440000.caffemodel") # 打开摄像头 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break # 预处理 blob = cv2.dnn.blobFromImage(frame, 1.0/127.5, (368, 368), (127.5, 127.5, 127.5), swapRB=True) net.setInput(blob) output = net.forward() # 提取关键点 points = [] h, w = frame.shape[:2] for i in range(len(BODY_PARTS)): prob_map = output[0, i, :, :] _, confidence, _, point = cv2.minMaxLoc(prob_map) x = int((w * point[0]) / output.shape[3]) y = int((h * point[1]) / output.shape[2]) points.append((x, y) if confidence > 0.1 else None) # 绘制骨架 for pair in POSE_PAIRS: part_a = pair[0] part_b = pair[1] if points[part_a] and points[part_b]: cv2.line(frame, points[part_a], points[part_b], (0,255,0), 2) cv2.circle(frame, points[part_a], 5, (0,0,255), -1) # 显示结果 cv2.imshow('Real-time Pose Estimation', frame) # 按Q退出 if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` ### 运行方法 1. 确保摄像头可用 2. 双击运行`pose_detection.py` 3. 按键盘Q键退出程序 --- ### 注意事项: 1. **性能提示**:在普通CPU上可能帧率较低(约2-5 FPS),如需更流畅体验建议: - 降低输入尺寸:将代码中`(368, 368)`改为`(224, 224)` - 关闭其他占用CPU的程序 2. **常见问题解决**: - 如果报错找不到模型文件,请检查文件路径 - 出现黑屏请检查摄像头是否被其他程序占用 - 延迟较高时可尝试缩小窗口显示尺寸 该方案实现了基础的人体骨架实时检测,后续可通过升级到GPU加速或使用轻量级模型(如MobileNet)提升性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值