当前位置:首页>python>一天一个Python知识点——Day 156:OpenCV基础

一天一个Python知识点——Day 156:OpenCV基础

  • 2026-02-26 00:52:40
一天一个Python知识点——Day 156:OpenCV基础

昨天我们学习了计算机视觉的理论基础——知道了图像在计算机眼中是数字矩阵,理解了卷积如何提取特征,也看到了CNN如何一步步学会“看”。

但问题来了:在实际项目中,你怎么把一张照片读进Python?怎么把彩色图转成灰度?怎么检测人脸?

今天,我们学习OpenCV——计算机视觉领域最基础、最强大、最普及的工具库。

OpenCV是什么?
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,包含2500+优化算法,涵盖图像处理、视频分析、目标检测、机器学习等几乎所有视觉任务。
它就像视觉工程师的“瑞士军刀”——你遇到的大多数图像处理问题,OpenCV都有现成函数。

OpenCV的安装与核心理念

安装OpenCV

# 标准安装(包含主要模块)pip install opencv-python# 如果需要额外模块(如跟踪算法)pip install opencv-contrib-python# 验证安装import cv2print(f"OpenCV版本: {cv2.__version__}")# 应输出 4.5.x 或更高版本

OpenCV的核心理念:一切皆矩阵

OpenCV读取的图像,本质上就是NumPy数组——这意味着你可以用NumPy的所有功能操作图像!

import cv2import numpy as np# 读取图像img = cv2.imread('photo.jpg')print(type(img))  # <class 'numpy.ndarray'>print(img.shape)  # (高度, 宽度, 通道数) 例如 (480, 640, 3)# 可以用NumPy方式操作roi = img[100:200200:300]  # 裁剪感兴趣区域img[:, :, 0] = 0  # 将蓝色通道全部置0
关键认知:OpenCV + NumPy = 图像处理的“倚天剑+屠龙刀”。

图像的读写与显示 —— Hello World

读取图像:cv2.imread()

import cv2# 最基本的读取——彩色模式(默认)img_color = cv2.imread('cat.jpg')# 等价于 img_color = cv2.imread('cat.jpg', cv2.IMREAD_COLOR)# 灰度模式读取img_gray = cv2.imread('cat.jpg', cv2.IMREAD_GRAYSCALE)# 保留Alpha通道(透明度)img_unchanged = cv2.imread('cat.png', cv2.IMREAD_UNCHANGED)# 检查是否读取成功(文件路径错误时不会报错,但返回None)if img_color is None:    print("错误:无法读取图像,请检查文件路径")    exit()

重要提示:OpenCV读取彩色图像时,默认通道顺序是 BGR(蓝-绿-红),而不是常见的RGB!这一点常被初学者忽视,导致用Matplotlib显示时颜色异常。

显示图像:cv2.imshow()

# 创建窗口并显示图像cv2.imshow('My Cat', img_color)# 等待按键(必须!否则窗口一闪而过)cv2.waitKey(0)  # 0表示无限等待,直到按下任意键# 关闭所有窗口cv2.destroyAllWindows()

cv2.waitKey()的秘密

  • 它不仅等待键盘输入,还负责处理GUI事件——没有它,图像窗口根本不会正常显示

  • 可以传入毫秒数:cv2.waitKey(5000) 等待5秒后自动关闭

保存图像:cv2.imwrite()

# 保存图像(格式由文件扩展名决定)cv2.imwrite('cat_gray.jpg', img_gray)  # 保存为JPEGcv2.imwrite('cat_copy.png', img_color)  # 保存为PNG

完整示例:读取→显示→保存

import cv2# 读取图像img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR)# 检查if img is None:    print("文件读取失败")    exit()# 显示原图cv2.imshow('Original Cat', img)# 转换为灰度并显示gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)cv2.imshow('Gray Cat', gray)# 保存灰度图cv2.imwrite('cat_gray.jpg', gray)# 等待按键cv2.waitKey(0)cv2.destroyAllWindows()

颜色空间转换 —— 让颜色更“听话”

为什么要转换颜色空间?

RGB虽然符合人类视觉,但在计算机视觉任务中并不是最佳选择:

  • RGB三个通道高度相关,受光照影响大

  • HSV(色调-饱和度-明度)将颜色信息与亮度分离,更适合基于颜色的目标提取

BGR ↔ 灰度

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

BGR ↔ HSV

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

HSV各通道范围(OpenCV中):

  • H(色调):0~179

  • S(饱和度):0~255

  • V(明度):0~255

实战:提取蓝色物体

import cv2import numpy as np# 读取图像img = cv2.imread('colorful_balls.jpg')# 转换为HSVhsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# 定义蓝色的HSV范围lower_blue = np.array([1105050])upper_blue = np.array([130255255])# 创建掩膜(在范围内的像素为白色,其余为黑色)mask = cv2.inRange(hsv, lower_blue, upper_blue)# 将掩膜与原图进行“与”操作,只保留蓝色区域result = cv2.bitwise_and(img, img, mask=mask)# 显示结果cv2.imshow('Original', img)cv2.imshow('Mask', mask)cv2.imshow('Result', result)cv2.waitKey(0)cv2.destroyAllWindows()
这段代码能做什么?—— 在彩色球堆中,只把蓝色的球“抠”出来,其他变黑。这是颜色追踪的基础

图像的几何变换 —— 移动、旋转、缩放

缩放:cv2.resize()

# 按指定尺寸缩放resized = cv2.resize(img, (300200))# 按比例缩放scale_percent = 50  # 缩小到50%width = int(img.shape[1] * scale_percent / 100)height = int(img.shape[0] * scale_percent / 100)resized = cv2.resize(img, (width, height))# 插值方法的选择# 缩小:INTER_AREA 效果最好# 放大:INTER_LINEAR 或 INTER_CUBICresized = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_AREA)

平移:cv2.warpAffine()

# 定义平移矩阵 [1, 0, tx; 0, 1, ty]tx, ty = 50100  # 向右移50,向下移100M = np.float32([[10, tx], [0, 1, ty]])# 应用仿射变换shifted = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))

旋转:cv2.getRotationMatrix2D()

# 获取旋转矩阵h, w = img.shape[:2]center = (w // 2, h // 2)  # 旋转中心angle = 45  # 逆时针45度scale = 1.0  # 不缩放M = cv2.getRotationMatrix2D(center, angle, scale)# 应用旋转rotated = cv2.warpAffine(img, M, (w, h))

仿射变换:三点对应

仿射变换是“线性变换+平移”,可以完成旋转、缩放、剪切等操作。OpenCV提供了根据三个对应点计算变换矩阵的函数:

# 原图中的三个点pts1 = np.float32([[5050], [20050], [50200]])# 目标图中的三个点pts2 = np.float32([[10100], [20050], [100250]])# 计算仿射变换矩阵M = cv2.getAffineTransform(pts1, pts2)# 应用变换dst = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))

透视变换:四点对应

当需要处理倾斜视角(如拍摄的文档、路牌)时,透视变换是利器:

# 原图中的四个角点(通常手动选取)pts1 = np.float32([[5665], [36852], [28387], [389390]])# 目标图中的四个角点(矩形)pts2 = np.float32([[00], [3000], [0300], [300300]])# 计算透视变换矩阵M = cv2.getPerspectiveTransform(pts1, pts2)# 应用变换dst = cv2.warpPerspective(img, M, (300300))
应用场景:扫描文档矫正、广告牌替换、AR效果。

图像滤波 —— 去噪与增强

低通滤波:平滑/模糊

# 均值滤波(每个像素替换为邻域平均值)blur = cv2.blur(img, (55))# 高斯滤波(邻域加权平均,中心权重高)gaussian = cv2.GaussianBlur(img, (55), 1.5)# 中值滤波(对椒盐噪声特别有效)median = cv2.medianBlur(img, 5)

参数解释

  • (5, 5):滤波器核大小(必须是奇数)

  • 1.5:高斯核的标准差(σ)

高通滤波:边缘检测

作用:提取图像中灰度变化剧烈的地方——即边缘。

Sobel算子:一阶导数

# 计算x方向的梯度sobelx = cv2.Sobel(gray, cv2.CV_64F, 10, ksize=5)# 计算y方向的梯度sobely = cv2.Sobel(gray, cv2.CV_64F, 01, ksize=5)# 计算梯度幅值sobel = cv2.magnitude(sobelx, sobely)sobel = cv2.convertScaleAbs(sobel)  # 转为8位图像

Canny边缘检测:最常用的边缘算法

Canny算法包括高斯滤波 + 梯度计算 + 非极大值抑制 + 双阈值处理,效果通常最好。

# 简单的两行代码,效果惊人edges = cv2.Canny(gray, threshold1=100, threshold2=200)# 显示结果cv2.imshow('Edges', edges)

参数含义

  • threshold1:低阈值(低于此值的不是边缘)

  • threshold2:高阈值(高于此值的肯定是边缘)

  • 中间的点,如果与高阈值边缘相连,则也被认为是边缘

视频处理 —— 让静态图像动起来

从摄像头捕获实时视频

import cv2# 打开摄像头(0表示第一个摄像头)cap = cv2.VideoCapture(0)# 检查是否成功打开if not cap.isOpened():    print("无法打开摄像头")    exit()while True:    # 逐帧捕获    ret, frame = cap.read()    # 如果正确读取帧,ret为True    if not ret:        print("无法接收帧,退出...")        break    # 处理帧(例如转为灰度)    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)    # 显示结果    cv2.imshow('Camera', gray)    # 按'q'键退出    if cv2.waitKey(1) == ord('q'):        break# 释放资源cap.release()cv2.destroyAllWindows()

从视频文件读取

cap = cv2.VideoCapture('video.mp4')  # 只需替换为文件路径# 其余代码与摄像头相同

保存视频

# 定义视频编码器和输出对象fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 或 'MJPG', 'X264'out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640480))while True:    ret, frame = cap.read()    if not ret:        break    # 处理帧(例如水平翻转)    frame = cv2.flip(frame, 1)    # 写入帧    out.write(frame)    cv2.imshow('Frame', frame)    if cv2.waitKey(1) == ord('q'):        break# 释放所有资源cap.release()out.release()cv2.destroyAllWindows()

实战项目——摄像头人脸检测与跟踪

让我们把今天学的所有知识整合起来,做一个完整的计算机视觉应用——实时人脸检测与跟踪。

核心思路

  1. 人脸检测:使用Haar级联分类器在每帧中查找人脸

  2. 人脸跟踪:检测到人脸后,用CSRT跟踪器持续追踪

  3. 状态切换:跟踪失败时,自动切换回检测模式

完整代码实现

import cv2class FaceTracker:    """实时人脸检测+跟踪器"""    def __init__(self):        # 加载预训练的人脸检测模型        self.face_cascade = cv2.CascadeClassifier(            cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'        )        self.tracker = None        self.tracking = False    def detect_face(self, frame):        """检测人脸"""        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)        faces = self.face_cascade.detectMultiScale(            gray,            scaleFactor=1.1,    # 图像金字塔缩放比例            minNeighbors=5,      # 每个候选框需要保留的邻域数            minSize=(3030)     # 最小人脸尺寸        )        return faces    def init_tracker(self, frame, bbox):        """初始化跟踪器"""        self.tracker = cv2.TrackerCSRT_create()        self.tracker.init(frame, tuple(bbox))        self.tracking = True    def update_tracker(self, frame):        """更新跟踪"""        success, bbox = self.tracker.update(frame)        return success, bbox    def process_frame(self, frame):        """处理单帧图像"""        # 如果当前未跟踪,执行检测        if not self.tracking:            faces = self.detect_face(frame)            if len(faces) > 0:                # 跟踪第一个检测到的人脸                bbox = faces[0]  # (x, y, w, h)                self.init_tracker(frame, bbox)                # 绘制检测框                x, y, w, h = bbox                cv2.rectangle(frame, (x, y), (x+w, y+h), (02550), 2)                cv2.putText(frame, 'Detection', (x, y-10),                           cv2.FONT_HERSHEY_SIMPLEX, 0.5, (02550), 2)        else:            # 跟踪模式            success, bbox = self.update_tracker(frame)            if success:                x, y, w, h = [int(v) for v in bbox]                cv2.rectangle(frame, (x, y), (x+w, y+h), (25500), 2)                cv2.putText(frame, 'Tracking', (x, y-10),                           cv2.FONT_HERSHEY_SIMPLEX, 0.5, (25500), 2)            else:                # 跟踪失败,下一帧重新检测                self.tracking = False        return frame# 主程序def main():    cap = cv2.VideoCapture(0)    tracker = FaceTracker()    while True:        ret, frame = cap.read()        if not ret:            break        # 处理帧        processed_frame = tracker.process_frame(frame)        # 显示        cv2.imshow('Face Tracking', processed_frame)        # 按'q'退出        if cv2.waitKey(1) & 0xFF == ord('q'):            break    cap.release()    cv2.destroyAllWindows()if __name__ == '__main__':    main()

代码解析

组件
功能
技术点
Haar检测
快速定位人脸
detectMultiScale
参数调优
CSRT跟踪
高精度跟踪
抗遮挡、尺度自适应
状态切换
检测→跟踪→检测
跟踪失败自动回退

运行效果:打开摄像头后,首先检测到人脸用绿色框标注,然后转为蓝色框跟踪;如果人脸移出画面或遮挡,系统自动重新检测。

从OpenCV开始,走进视觉世界

今天,我们学习了OpenCV最核心的基础知识:

模块
核心函数
应用场景
图像I/O
imread
imshowimwrite
所有项目的起点
颜色空间
cvtColor
inRange
颜色提取、目标追踪
几何变换
warpAffine
warpPerspective
图像矫正、数据增强
滤波
blur
SobelCanny
去噪、边缘检测
视频
VideoCapture
VideoWriter
实时处理、视频分析
检测跟踪
CascadeClassifier
Tracker
人脸识别、目标追踪

OpenCV最大的价值:它不是黑箱,而是工具箱——你清楚地知道每个函数在做什么,并且可以组合它们解决实际问题。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-28 08:56:43 HTTP/2.0 GET : https://f.mffb.com.cn/a/477113.html
  2. 运行时间 : 0.124727s [ 吞吐率:8.02req/s ] 内存消耗:4,826.84kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8ea23f55081d326bf6eaa82e3ba9fc7f
  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.000393s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000586s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000278s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000269s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000470s ]
  6. SELECT * FROM `set` [ RunTime:0.001047s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000532s ]
  8. SELECT * FROM `article` WHERE `id` = 477113 LIMIT 1 [ RunTime:0.002134s ]
  9. UPDATE `article` SET `lasttime` = 1772240203 WHERE `id` = 477113 [ RunTime:0.003356s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000238s ]
  11. SELECT * FROM `article` WHERE `id` < 477113 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000909s ]
  12. SELECT * FROM `article` WHERE `id` > 477113 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.021920s ]
  13. SELECT * FROM `article` WHERE `id` < 477113 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.012299s ]
  14. SELECT * FROM `article` WHERE `id` < 477113 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002075s ]
  15. SELECT * FROM `article` WHERE `id` < 477113 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.012926s ]
0.126306s