当前位置:首页>python>用 Python + OpenCV 从零实现"先学习、再实时追踪"的物体识别系统

用 Python + OpenCV 从零实现"先学习、再实时追踪"的物体识别系统

  • 2026-08-25 08:24:47
用 Python + OpenCV 从零实现"先学习、再实时追踪"的物体识别系统

一个真实的折腾记录:让电脑摄像头"先认识一个物体,再在实时画面里持续锁定并跟踪它"。本文完整记录方案选型、实现过程、踩过的四个大坑,以及核心代码逐段讲解。全程离线、零训练、纯 CPU 实时运行。


一、需求是什么

原话是:"实时动态捕捉摄像头画面中的物体,这个物体可以提前学习。"

拆解一下:

  1. 提前学习:系统要先"认识"目标物体——给它看几张这个物体的照片(样本),它就能记住;

  2. 实时捕捉:之后打开摄像头,在每一帧实时画面里找到这个物体;

  3. 动态跟踪:物体移动时,绿色的跟踪框要一直跟着它走。

二、方案选型:为什么不用 YOLO?

先对比了三种主流做法:

方案优点缺点
深度学习检测(YOLO / SSD)通用物体识别强要联网下权重;自定义物体要收集数据集训练;依赖重
特征点匹配(ORB + 单应性) ✅零训练、几秒学会一个新物体、轻量、CPU 实时纯色/无纹理物体效果差
颜色追踪(HSV 阈值)实现最简单只能追特定颜色,怕光照变化

最终选了 ORB 特征点匹配 + RANSAC 单应性,理由很直接:

  • 需求是"学习一个特定物体",特征匹配天然支持"给几张参考图就能认",不需要任何训练过程;

  • 完全本地计算,CPU 就能跑实时;

  • 不依赖网络(这一点在后面的环境里成了硬性要求)。

三、整体架构:两个阶段

阶段一:学习(learn_object.py)
   摄像头 → 框选/自动采样物体 → 保存参考样本 → learned_objects/<物体名>/
阶段二:追踪(track_object.py)
   摄像头每帧 → ORB 提取特征点 → FLANN 匹配参考样本
   → RANSAC 单应性估计物体位置 → 严格门槛过滤误匹配
   → 绿色框标注 → 桌面窗口显示 + 浏览器 MJPEG 直播

四、踩过的四个大坑(本文精华)

坑 1:网络被拦截,OpenCV 装不上

pip install opencv-python 一直卡住,检查发现 PyPI 根本连不上(沙箱拦截了外网)。

解决:检查本地 pip 缓存,发现里面躺着完整的 wheel 包——.body 文件其实就是 wheel 压缩包(ZIP 格式)!于是:

1. 读取 wheel 元数据确认:opencv-python 5.0.0.93(适配 Python 3.7+)、numpy 2.5.2(适配 Python 3.12)
2. 把 .body 重命名为标准 .whl 文件名
3. 用 PowerShell 的 ZipFile 直接解包到本地目录 cv_env/
4. 运行时设置 PYTHONPATH=cv_env 即可 import cv2 / numpy

经验:pip 的 HTTP 缓存目录(%LOCALAPPDATA%\pip\cache)里存的就是下载过的 wheel,断网也能用。

坑 2:摄像头"没打开"——系统里藏着一个"占位摄像头"

这是最诡异的一关。追踪窗口里只有一个"风扇圆圈 + 摄像头关闭"的图标,根本没有画面。

一开始怀疑是亮度问题,做了各种提亮算法,结果用户说:不是亮度问题,压根没有画面

于是抓了两帧流数据对比,发现 95.6% 的像素完全相同——这根本不是视频,是一张静态图

真相:Windows 枚举出了两个"视频设备":

设备后端表现
DSHOW 索引 1DirectShow能"打开"也能"出帧",但输出的是"摄像头已关闭"占位静态图(虚拟设备)
MSMF 索引 0Media Foundation真正的摄像头,但默认像素格式协商失败(报错 -1072875772),必须显式指定编码格式才能出帧

所以之前所有"追踪成功"其实都是在匹配那张占位图自己——假阳性!

解决:摄像头探测逻辑改成"后端 × 索引 × 编码格式"三维组合探测,并且用帧间差异判断设备是否输出真实视频流(真实摄像头两帧之间必然有变化,占位图几乎没有)。

坑 3:画面偏暗?其实是误判

中途发现 DSHOW 占位设备的画面均值只有 46/255,很暗,一度加了 gamma 提亮。后来用上真实摄像头(MSMF 索引 0)才发现:真实摄像头的自动曝光完全正常(均值 100+,画面明亮)。之前的"暗"只是占位图自身的样子。最终把提亮改成了自适应:画面均值低于阈值才提亮。

坑 4:检测框乱跳、框太大

用上真实摄像头后,绿框能出现,但经常铺满大半个画面

原因:自动采样用"中心 50% 裁剪"保存样本,把物体周围的背景也学进去了。之后匹配时,背景特征也能匹配上,单应性算出的框自然就大。

解决(双管齐下)

  1. 改手动紧贴框选:按 S 键,用鼠标画一个只框住物体本身的框,多角度采集 3~5 张;

  2. 加严格判定门槛:RANSAC 内点数量必须 ≥ 12 且占匹配数比例 ≥ 30%,框的尺寸不能超过画面的 90%,否则一律视为"没找到",不画框。

改完之后:绿框紧贴物体,移动物体框跟着走,物体移出画面再回来能自动重新锁定。

五、核心代码讲解

5.1 摄像头自动探测:open_camera()

defopen_camera(prefer=None):
fourccs= ['MJPG''YUY2''I420''NV12']
ifpreferisnotNone:
cands= [(prefercv2.CAP_MSMFfforfinfourccs+ [(prefercv2.CAP_DSHOWNone)]
else:
cands= []
foriinrange(4):            # 索引 0~3
forfinfourccs:         # 每种编码都试
cands.append((icv2.CAP_MSMFf))
foriinrange(4):
cands.append((icv2.CAP_DSHOWNone))
foridxbackendfcincands:
cap=cv2.VideoCapture(idxbackend)
ifcap.isOpened():
iffc:
cap.set(cv2.CAP_PROP_FOURCCcv2.VideoWriter_fourcc(*fc))
cap.set(cv2.CAP_PROP_FRAME_WIDTH1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT720)
forattemptinrange(4):  # 冷启动第一帧常失败,重试
okf=cap.read()
ifokandfisnotNone:
returncapidxbackend
time.sleep(0.3)
cap.release()
returnNoneNoneNone

要点:

  • MSMF 优先、DSHOW 兜底:MSMF 是 Windows 原生媒体框架,真实摄像头通常在这里;DSHOW 可能拿到占位设备;

  • 编码格式要显式指定CAP_PROP_FOURCC 设置 MJPG/YUY2 等,绕开默认格式协商失败的问题;

  • 第一帧失败要重试:摄像头刚被上一个进程释放时,第一帧经常读不到,等 0.3 秒再试。

5.2 学习脚本:learn_object.py

三种学习方式,覆盖不同场景:

pythonlearn_object.py--namecup# 交互式:按 S 框选保存,Q 退出
pythonlearn_object.py--namecup--auto5# 全自动:中心区域自动拍 5 张
pythonlearn_object.py--namecup--from-imagea.jpg# 用已有图片学习

核心逻辑:打开摄像头 → 显示实时画面 → 按 S 弹出 cv2.selectROI 让用户用鼠标紧贴物体画框 → 回车确认 → 裁剪保存到 learned_objects/cup/sample_001.jpg。多角度重复几次,样本越丰富识别越稳。

附带一个自适应增强函数(LUT 查找表实现,几乎零开销):

_GAMMA_LUT=np.array([((i/255.0**0.5*255foriinrange(256)], dtype=np.uint8)
defenhance(img):
ifimg.mean() <70:          # 画面太暗才提亮
returncv2.LUT(img_GAMMA_LUT)
returnimg

5.3 追踪脚本:track_object.py

① 提取特征:ORB

orb=cv2.ORB_create(nfeatures=1500)
kpdes=orb.detectAndCompute(frameNone)

ORB 在图像里找角点和纹理关键点,并计算 32 字节的二进制描述子。它具备旋转和尺度不变性——物体转个角度、远近变化,特征点依然能对上。nfeatures=1500 限制每帧最多提取 1500 个点,兼顾速度与精度。

② 匹配特征:FLANN + Lowe 比率测试

flann=cv2.FlannBasedMatcher(
dict(algorithm=6table_number=12key_size=20multi_probe_level=2),
dict(checks=50))
matches=flann.knnMatch(rdesdesk=2)      # 每个参考点找两个最近邻
good= [mforminmatches
iflen(m==2andm[0].distance<0.75*m[1].distance]
  • algorithm=6 是 LSH(局部敏感哈希),专为 ORB 这类二进制描述子设计;

  • Lowe 比率测试:如果最近邻距离 < 次近邻的 0.75 倍,才认为这个匹配可靠。这一招能过滤掉大量歧义匹配。

③ 估计位置:RANSAC 单应性

Hmask=cv2.findHomography(srcdstcv2.RANSAC5.0)
corners=np.float32([[0,0],[w,0],[w,h],[0,h]]).reshape(-1,1,2)
proj=cv2.perspectiveTransform(cornersH)   # 样本四角投影到当前画面

假设物体近似一个平面,用 RANSAC 从匹配点对里估计单应矩阵 H(平面透视变换),再把参考图的四个角投影到当前画面——投影出来的四边形就是物体现在的位置和姿态。

④ 严格门槛:拒绝背景误匹配(坑 4 的代码级解决)

inliers=int(mask.sum())
ifinliers<12orinliers<len(good*0.3:
continue# 内点太少或占比太低,当作没找到
# 另外要求:框的宽高不能超过画面 90%,且不能太靠近画面边缘

⑤ 平滑:EMA 指数滑动平均

iflock_streak>=2andprev_lockisnotNoneandtrackerisNone:
nb=tuple(int(0.7*p+0.3*qforpqinzip(prev_locknb))

连续两帧识别成功后才"锁定",之后每帧用 0.7×旧框 + 0.3×新框 混合,框的抖动大幅降低。

⑥ 浏览器直播:极简 MJPEG 服务器

classMJpegStreamer:
# 用 http.server 起一个线程服务器,/video 返回 multipart/x-mixed-replace
# 浏览器 <img src="/video"> 就能看实时画面

原理:HTTP 响应头 Content-Type: multipart/x-mixed-replace; boundary=frame,然后不断往同一个连接里推送 JPEG 帧--frame\r\n...图片数据...),浏览器就会像播放视频一样连续刷新。整个服务器 40 行左右,不依赖任何 Web 框架。

主循环(简化)

whileTrue:
okframe=cap.read()
frame=enhance(frame)                    # 暗画面自动提亮
det=detect(small)                       # 降采样后识别,更快
ifdetisnotNone:
box=映射回原图坐标
box=EMA平滑(box)
画绿色框+物体名
streamer.update(压缩后的JPEG)              # 推给浏览器
cv2.imshow('实时追踪'frame)             # 桌面窗口

六、最终效果

  • 绿框紧贴物体,物体左右移动时框跟着走;

  • 物体移出画面再回来,系统自动重新搜索锁定

  • 桌面窗口实时显示,浏览器打开 http://127.0.0.1:8090 也能看直播;

  • 全流程离线运行,CPU 实时,无需任何训练。

track object/
├── 学习物体.bat / 追踪物体.bat    # 双击启动
├── learn_object.py               # 学习脚本
├── track_object.py               # 追踪脚本
├── learned_objects/toy/          # 已学物体的样本
├── cv_env/                       # OpenCV + numpy 离线环境
└── wheels/                       # 离线安装备份

七、总结与可扩展方向

这套方案的核心价值在于:"学习"一个物体的成本只有几秒钟(拍几张样本),却换来了持续、实时、可跟随的追踪能力,而且完全不需要联网和训练。

可扩展的方向:

  1. 多物体同时追踪:每个物体一组样本,分别匹配即可;

  2. 颜色追踪模式:针对纯色/无纹理物体,用 HSV 阈值定位;

  3. 运动轨迹记录:把每帧的框中心点连成轨迹线;

  4. 丢失/找回通知:识别失败超过 N 帧时提醒;

  5. 接入深度学习:网络环境允许时,可叠加 YOLO 等模型做通用检测兜底。

技术栈:Python 3.12 · OpenCV 5.0 · numpy 2.5.2 · Windows Media Foundation / DirectShow

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-25 09:54:37 HTTP/2.0 GET : https://f.mffb.com.cn/a/512169.html
  2. 运行时间 : 0.229996s [ 吞吐率:4.35req/s ] 内存消耗:4,679.00kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c74b5a7923919bd44a8c7769fe8d01e5
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001141s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001466s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000669s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.005422s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001410s ]
  6. SELECT * FROM `set` [ RunTime:0.000621s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001461s ]
  8. SELECT * FROM `article` WHERE `id` = 512169 LIMIT 1 [ RunTime:0.001305s ]
  9. UPDATE `article` SET `lasttime` = 1787622877 WHERE `id` = 512169 [ RunTime:0.030822s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000684s ]
  11. SELECT * FROM `article` WHERE `id` < 512169 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001143s ]
  12. SELECT * FROM `article` WHERE `id` > 512169 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001996s ]
  13. SELECT * FROM `article` WHERE `id` < 512169 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.013346s ]
  14. SELECT * FROM `article` WHERE `id` < 512169 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001893s ]
  15. SELECT * FROM `article` WHERE `id` < 512169 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002168s ]
0.233653s