当前位置:首页>python>OpenCV+Python 核心讲义:从零构建计算机视觉基础

OpenCV+Python 核心讲义:从零构建计算机视觉基础

  • 2026-07-02 16:54:30
OpenCV+Python 核心讲义:从零构建计算机视觉基础

适用环境:Python 3.10 / OpenCV 4.x / NumPy 1.x讲义定位:以“原理 + 关键算法 + 关键逻辑”为主线,重点讲透,兼顾实战

讲义目录

  1. 1. 环境搭建(Python 3.10 + OpenCV)
  2. 2. 图像的本质:NumPy 数据结构
  3. 3. 图像处理基础操作(I/O、像素访问、几何变换)
  4. 4. 关键算法之一:Canny 边缘检测
  5. 5. 关键算法之二:SIFT / ORB 特征检测与匹配
  6. 6. 视频分析:背景建模与运动检测
  7. 7. 总结:算法选择与工程思维

一、环境搭建(Python 3.10 + OpenCV)

1.1 为何需要“环境搭建”

开发环境是编程的“厨房”。OpenCV 是一个工具库,需要先把它正确安装到 Python 环境中,才能开始处理图像。

1.2 Python 版本检查

OpenCV 的 Python 版本依赖于 Python 3.6+,推荐 3.8~3.11(本讲义以 Python 3.10 为标准)。执行以下命令检查:

python --version   # 或 python3 --version

1.3 OpenCV 安装

OpenCV 提供两个主要的 PyPI 包:

包名
功能
是否包含 SIFT/SURF
opencv-python
基础版:核心功能
❌ 不包含
opencv-contrib-python完整版
:基础 + 扩展模块
✅ 包含

本讲义推荐安装完整版(包含 SIFT 等算法):

pip install opencv-contrib-python

⚠️ 重要:不要同时安装两个包,否则会冲突。如果之前装过基础版,请先卸载。

1.4 验证安装

python -c "import cv2; print(cv2.__version__)"

1.5 核心依赖——NumPy

OpenCV 中图像的数据载体就是 NumPy 的 ndarray。NumPy 会在 OpenCV 安装时自动作为依赖被安装,但理解 NumPy 数组结构是理解 OpenCV 所有操作的前提。

二、图像的本质:NumPy 数据结构

2.1 核心认知

在 OpenCV 中,图像就是 NumPy 的多维数组。掌握这一点,就掌握了 OpenCV 80% 的底层逻辑。

  • • 灰度图像:二维数组,形状为 (高度, 宽度),每个元素是 0–255 的像素亮度值。
  • • 彩色图像:三维数组,形状为 (高度, 宽度, 通道数)

2.2 坐标体系 ⭐ 必知必会

OpenCV 的坐标系与数学坐标系不同:原点在图像的左上角,X 轴向右,Y 轴向下

import cv2img = cv2.imread('image.jpg')# 访问 (row=100, col=200) 处的像素pixel = img[100, 200]           # row是Y轴(高度),col是X轴(宽度)

2.3 BGR vs RGB ⭐ 最容易踩的坑

OpenCV 默认使用 BGR 通道顺序,这与大多数其他库(matplotlib、PIL 等)使用的 RGB 截然不同:

  • • 蓝色通道:img[:, :, 0]
  • • 绿色通道:img[:, :, 1]
  • • 红色通道:img[:, :, 2]

典型陷阱:用 matplotlib 直接显示 OpenCV 读取的图像,颜色会完全错乱(红蓝颠倒)。

# 颜色空间转换——显示前必做rgb_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2RGB)gray_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2GRAY)

2.4 通道分离与合并

b, g, r = cv2.split(img)           # 分离三个通道img_merged = cv2.merge((b, g, r))  # 合并回三通道

三、图像处理基础操作

3.1 图像 I/O

import cv2import numpy as np# 读取图像(BGR格式)img = cv2.imread('input.jpg', cv2.IMREAD_COLOR)  # 或直接写 1img_gray = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)  # 或写 0# 读取失败检查——重要!if img is None:    print("错误:无法读取图像文件")    exit()# 显示图像cv2.imshow('Window Title', img)cv2.waitKey(0)      # 等待按键(0表示无限等待)cv2.destroyAllWindows()# 保存图像cv2.imwrite('output.jpg', img)

3.2 ROI(感兴趣区域)提取

ROI 是图像处理中非常高频的操作——在一张大图中截取指定区域进行处理。

# 提取 [行100:300, 列200:400] 矩形区域roi = img[100:300, 200:400]# 将 ROI 中的蓝色通道全部置零(关键逻辑:[:, :, 0] 表示所有行的所有列的蓝色通道)roi[:, :, 0] = 0

关键逻辑img[100:300, 200:400] 返回的是原图的 视图(view),不是副本。修改 ROI 会直接影响原图。如需要独立副本,使用 roi = img[100:300, 200:400].copy()

3.3 几何变换

仿射变换(旋转、缩放、平移):

rows, cols = img.shape[:2]# 旋转45度:构建变换矩阵M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1.0)rotated = cv2.warpAffine(img, M, (cols, rows))# 缩放resized = cv2.resize(img, (new_width, new_height))# 平移M_trans = np.float32([[1, 0, 100], [0, 1, 50]])shifted = cv2.warpAffine(img, M_trans, (cols, rows))

透视变换(用于文档校正、图像配准):

# 定义原图中的四个点和目标图中的四个点src_pts = np.float32([[x1,y1], [x2,y2], [x3,y3], [x4,y4]])dst_pts = np.float32([[0,0], [width,0], [0,height], [width,height]])M_persp = cv2.getPerspectiveTransform(src_pts, dst_pts)warped = cv2.warpPerspective(img, M_persp, (width, height))

3.4 图像平滑(滤波)

图像平滑用于去噪和模糊处理。最常见的操作是高斯滤波——它根据邻域像素的高斯加权平均来计算新像素值。

blurred = cv2.GaussianBlur(img, (5, 5), sigma=1.4)
  • • (5, 5) 是核大小,必须是奇数
  • • sigma 越大,平滑效果越强,但边缘也越模糊

四、关键算法之一:Canny 边缘检测

4.1 为什么要学 Canny

Canny 是边缘检测领域的 “最优算法” ,1986 年由 John F. Canny 提出,至今仍是工业界和学术界的主流选择。它的设计目标是满足三个标准:低错误率、高定位精度、最小响应(每个边缘只被检测一次)。

4.2 五步核心流程 ⭐ 重中之重

Canny 是一个多阶段算法,核心包含以下 5 个步骤:

步骤 1:高斯滤波(降噪)

边缘检测对噪声极其敏感,因此第一步必须使用高斯滤波器去除噪声。这一步是 Canny 算法的“入场券”,不降噪会导致大量假边缘。

步骤 2:梯度计算(找到边缘方向)

使用 Sobel 算子计算水平梯度  和垂直梯度 ,进而得到:

  • • 梯度幅值——反映边缘的强度
  • • 梯度方向——指示边缘的走向

步骤 3:非极大值抑制(细化边缘)⭐ Canny 的精髓所在

在得到梯度幅值图像后,每个像素可能与它梯度方向上的相邻像素比较。只保留局部最大值,其余置为零。这一步将“粗边缘”细化为 1 像素宽的线条。

形象理解:想象一座山脊线的截面图——只有山顶的点的值是局部最大,山坡上的点都要被“抑制”掉,只剩下山脊线。

步骤 4:双阈值处理(区分真假边缘)

这是 Canny 区别于其他边缘检测算法的关键创新。设定两个阈值:maxVal(高阈值)和 minVal(低阈值):

  • • 梯度 > maxVal强边缘(一定是真实边缘)
  • • 梯度 < minVal:丢弃(肯定不是边缘)
  • • minVal < 梯度 < maxVal弱边缘(可能是噪声)

步骤 5:边缘连接(滞后阈值)⭐ Canny 的另一大智慧

弱边缘能否保留,取决于它是否连接到某个强边缘。如果弱边缘与强边缘相连,就保留;否则丢弃。这一逻辑去除了孤立的噪声点,同时保留了完整的物体轮廓。

算法设计思想:真实的物体边缘往往是连续的、较长的线,而噪声点通常是孤立的、短小的。通过“是否连接到强边缘”这一条件,Canny 巧妙地利用了物理世界中的“连续性”先验。

4.3 OpenCV 实现

import cv2img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)# 单行调用封装了全部五步edges = cv2.Canny(img, minVal, maxVal)# 更精细的控制(可选)edges = cv2.Canny(img, minVal, maxVal, apertureSize=3, L2gradient=True)
  • • minVal 和 maxVal 是双阈值参数,通常 maxVal 设为图像最大梯度的 70%90%,`minVal` 为其 30%50%。
  • • L2gradient=True 使用精确的欧氏距离计算梯度幅值,精度更高但略慢。

五、关键算法之二:SIFT / ORB 特征检测与匹配

5.1 核心问题:什么是“特征”?

特征(Features)是图像中“独特”的、可被重复识别的位置。想象你要在两幅不同的照片中寻找同一座建筑——你不能直接逐像素比对(因为拍摄角度、缩放、光照都可能不同),你需要的是即便经过旋转、缩放、光照变化仍能被识别出来的关键点,以及描述这些关键点周围区域信息的 描述符(Descriptor) 。OpenCV 提供了多种特征检测算法。

5.2 两种经典算法对比

特性
SIFT
ORB
类型
浮点数描述子(128维)
二进制描述子(字节向量)
核心原理
高斯差分尺度空间 + 梯度直方图
FAST 角点检测 + BRIEF 二进制描述
优点
精度高,尺度/旋转不变性强
速度快(10倍+),无需浮点运算
缺点
计算量大,需专利许可
尺度不变性较弱
距离度量
欧氏距离(L2)
汉明距离(Hamming)

专利说明:SIFT 在 OpenCV 的贡献模块中可用,但注意商业应用的专利限制。

5.3 SIFT 四步核心逻辑

SIFT 的四个步骤形成了从“粗检测”到“精匹配”的完整逻辑链条:

  1. 1. 尺度空间构建:通过构建高斯金字塔,在不同尺度下寻找稳定关键点(解决“尺度不变性”)。
  2. 2. 关键点定位:剔除低对比度点和边缘响应强的点,只保留稳定可靠的关键点。
  3. 3. 方向指派:为每个关键点计算主方向,使特征具有旋转不变性。
  4. 4. 描述子生成:在关键点周围 16×16 窗口内,划分 4×4 子块,每个子块计算 8 个方向梯度,形成 128 维特征向量

5.4 ORB 核心逻辑

ORB 结合了 FAST 角点检测器和 旋转不变的 BRIEF 描述符,在保持较好精度的同时追求极致的运算速度。

5.5 特征匹配:BFMatcher(暴力匹配器)

有了特征描述符之后,就需要在两张图像之间找到匹配的关键点对。BFMatcher 的核心逻辑是:取第一张图中的特征点,与第二张图所有特征点逐一比对距离,返回最近的那个。

关键选择:距离度量的类型取决于特征描述符的类型——

  • • SIFT(浮点数描述符)→ 用 cv2.NORM_L2(欧氏距离)
  • • ORB(二进制描述符)→ 用 cv2.NORM_HAMMING(汉明距离)

5.6 完整代码示例

ORB + 暴力匹配 + 汉明距离

import cv2img1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)img2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)# 1. 创建ORB检测器orb = cv2.ORB_create()# 2. 检测关键点并计算描述符kp1, des1 = orb.detectAndCompute(img1, None)kp2, des2 = orb.detectAndCompute(img2, None)# 3. 创建暴力匹配器(汉明距离)bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)# 4. 执行匹配matches = bf.match(des1, des2)# 5. 按距离排序(距离越小越匹配)matches = sorted(matches, key=lambda x: x.distance)# 6. 绘制并显示前10个最佳匹配img_matches = cv2.drawMatches(img1, kp1, img2, kp2, matches[:10], None,                               flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)cv2.imshow('Matches', img_matches)

SIFT + 暴力匹配 + L2 距离:将 ORB 替换为 SIFT,距离度量改为 cv2.NORM_L2 即可。

六、视频分析:背景建模与运动检测

6.1 核心问题:如何从视频中检测运动物体?

视频的本质是一系列图像帧的序列。运动物体检测的核心逻辑是:找出视频帧中“变化”的区域,将其与“静止”的背景分离。这一逻辑背后的关键假设是:摄像头是固定的,背景相对稳定。

6.2 三大核心算法对比

方法
原理
优点
缺点
帧差法
相邻帧相减,绝对值超过阈值即为运动
计算快、实现简单
会产生空洞,光照敏感
背景差分法(MOG2/KNN)
建立背景模型,当前帧与背景比较
精度高,适应复杂环境
计算量大,需训练
光流法
分析像素运动矢量
可跟踪运动方向
计算量最大

6.3 帧差法(最直观的方案)

核心逻辑:,大于阈值则判定为运动像素(前景),否则为背景。

import cv2cap = cv2.VideoCapture('video.mp4')ret, frame1 = cap.read()prev_gray = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)while True:    ret, frame2 = cap.read()    if not ret:        break    curr_gray = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)    diff = cv2.absdiff(prev_gray, curr_gray)    _, thresh = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)    cv2.imshow('Motion', thresh)    if cv2.waitKey(30) == 27:  # ESC 退出        break    prev_gray = curr_gray

6.4 背景差分法(工业级方案)⭐ 实战中最常用

背景差分法通过为每个像素建立统计模型来实现运动检测。MOG2(高斯混合模型)是目前最广泛使用的背景减除算法之一。

import cv2cap = cv2.VideoCapture('video.mp4')bg_subtractor = cv2.createBackgroundSubtractorMOG2(    history=500,       # 背景模型训练帧数    varThreshold=16    # 前景检测灵敏度阈值)while True:    ret, frame = cap.read()    if not ret:        break    fg_mask = bg_subtractor.apply(frame)    # 形态学操作去噪    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))    cleaned = cv2.morphologyEx(fg_mask, cv2.MORPH_OPEN, kernel)    cv2.imshow('Foreground', cleaned)    if cv2.waitKey(30) == 27:        break

KNN vs MOG2:KNN 对动态背景(如摇摆的树叶)更鲁棒,MOG2 对光照变化适应性更强。可替换为 cv2.createBackgroundSubtractorKNN() 使用 KNN 方法。

七、总结:算法选择与工程思维

7.1 算法选择的决策框架

任务
推荐算法
核心理由
获取图像基本边界
Canny 边缘检测
精度高,多阶段逻辑完善
不同图像间找相同目标
ORB + BFMatcher
速度快,实时性要求高的场景
高精度图像配准/拼接
SIFT + BFMatcher
精度高,适合精度优先的场景
固定摄像头运动检测
MOG2 背景差分
抗噪性好,工业级方案
快速原型验证
帧差法
实现简单,理解核心概念

7.2 三条工程原则

  1. 1. 颜色通道先转换:任何基于 OpenCV 的处理后如需可视化,务必进行 BGR→RGB 转换。
  2. 2. 降噪是第一要务:图像处理中的大多数算法都对噪声敏感(尤其是边缘检测),处理前先滤波是“铁律”。
  3. 3. 分步调试法:复杂视觉流程应拆分为多个阶段,每阶段保存中间结果观察,便于定位问题。

7.3 核心思维一句话

“在计算机视觉领域,数据结构和降噪是底层基石,特征提取和匹配是认知桥梁,运动检测是从静态到动态的范式跃迁。” ——理解这一分层思维,就能从容应对 OpenCV 的全部核心应用。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 02:19:55 HTTP/2.0 GET : https://f.mffb.com.cn/a/496024.html
  2. 运行时间 : 0.136767s [ 吞吐率:7.31req/s ] 内存消耗:4,477.59kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=22f58b4b7fcf8ccf4c826f2c48bf6cf5
  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.000643s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000960s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000351s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000272s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000649s ]
  6. SELECT * FROM `set` [ RunTime:0.000237s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000804s ]
  8. SELECT * FROM `article` WHERE `id` = 496024 LIMIT 1 [ RunTime:0.008917s ]
  9. UPDATE `article` SET `lasttime` = 1783016395 WHERE `id` = 496024 [ RunTime:0.015640s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000447s ]
  11. SELECT * FROM `article` WHERE `id` < 496024 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000638s ]
  12. SELECT * FROM `article` WHERE `id` > 496024 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000449s ]
  13. SELECT * FROM `article` WHERE `id` < 496024 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.021145s ]
  14. SELECT * FROM `article` WHERE `id` < 496024 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.014289s ]
  15. SELECT * FROM `article` WHERE `id` < 496024 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000947s ]
0.138744s