当前位置:首页>python>OpenCV-Python实战|哈里斯角检测:吃透图像“路标”,解锁特征点提取核心技巧

OpenCV-Python实战|哈里斯角检测:吃透图像“路标”,解锁特征点提取核心技巧

  • 2026-06-24 09:36:26
OpenCV-Python实战|哈里斯角检测:吃透图像“路标”,解锁特征点提取核心技巧

在前几天的分享中,我们吃透了图像特征的核心逻辑,知道边缘、颜色、形状、纹理是计算机世界的关键线索。而今天要讲的哈里斯角检测,正是特征点提取的入门必修课”——角点作为图像中最具辨识度的特征点,就像图像里的路标,是后续图像匹配、全景拼接、目标跟踪、三维重建的核心基础,也是衔接基础特征提取与高级计算机视觉任务的关键一步。

很多新手学习角点检测时,容易陷入只会调函数,不懂核心逻辑的误区:比如知道用cv2.cornerHarris()函数能检测角点,却不知道角点是什么、算法为什么能检测到角点,更不知道如何调整参数适配不同场景。今天这篇实操教程,就带大家彻底吃透哈里斯角检测——从通俗定义、核心原理,到实操代码、参数调优、避坑指南,全程避开晦涩理论,结合前文所学的梯度、边缘知识,让新手既能快速上手实操,也能理解背后的逻辑,夯实特征提取的基础。

一、前置基础:先搞懂——什么是角点?(通俗解读)

在开始哈里斯角检测之前,我们先搞懂最基础的问题:什么是角点?用一句话就能讲透:角点是图像中灰度值变化剧烈的点,也是两个或多个边缘的交点,就像我们生活中的墙角、桌子的拐角——无论从哪个方向观察,它的轮廓都会发生明显变化,这也是角点最核心的特征。

结合三种图像区域的对比,新手能快速区分角点、平坦区域、边缘区域(重点记,后续理解算法原理会用到):

平坦区域:无论沿哪个方向移动检测窗口,窗口内的灰度值几乎没有变化(比如纯色背景);

边缘区域:沿边缘平行方向移动窗口,灰度值无明显变化;但沿边缘垂直方向移动,灰度值会剧烈变化(比如物体的轮廓边缘);

角点区域:沿任何方向移动检测窗口,窗口内的灰度值都会发生剧烈变化——这也是角点与其他区域最本质的区别,也是哈里斯角检测算法的核心判断依据。

举个通俗例子:国际象棋棋盘的黑白格子交点,就是典型的角点——无论我们沿着水平、垂直还是对角线方向移动窗口,窗口内的灰度值(黑白或白黑)都会发生剧烈变化;而棋盘的格子内部是平坦区域,格子的边缘则是边缘区域。

关键关联(衔接前文):我们前几篇所学的Sobel算子(梯度计算),是哈里斯角检测的基础——角点的灰度变化剧烈,本质就是梯度值较大,哈里斯算法正是通过计算梯度、构建矩阵,量化这种灰度变化,从而精准识别角点。

二、核心原理:哈里斯角检测算法到底在做什么?(通俗版)

哈里斯角检测算法(1988年由Chris HarrisMike Stephens提出,是对Moravec角点检测算法的改进),核心逻辑非常简单,不用死记复杂的数学公式,抓住窗口分析+灰度变化量化两个核心,就能轻松理解,其本质是通过滑动窗口分析像素区域的灰度变化,利用数学模型判断区域类型。

简化后的核心流程(新手必记):

1.梯度计算:对图像的每个像素,用Sobel算子计算水平方向(Ix)和垂直方向(Iy)的梯度(衔接前文Sobel算子知识点),梯度越大,说明灰度变化越剧烈;

2.构建矩阵:对每个像素,以它为中心取一个小窗口(blockSize),计算窗口内梯度的协方差矩阵M,这个矩阵能量化窗口内的灰度变化规律;

3.计算响应值:通过矩阵M的行列式(det(M))和迹(trace(M)),计算哈里斯响应值R,公式为:k是经验常数,通常取0.04~0.06);

4.角点判断:设定一个阈值,当响应值R大于阈值时,判断该像素为角点(R值越大,角点越明显);同时通过非极大值抑制,过滤掉相邻的冗余角点,保留唯一的峰值响应点。

关键补充(新手不用深究公式,记结论即可):

R为较大正值时,该像素是角点(灰度变化剧烈,符合角点特征);

R为负值时,该像素是边缘(仅单一方向灰度变化剧烈);

R接近0时,该像素是平坦区域(灰度变化不明显)。

哈里斯角检测的核心优势的是具有旋转不变性,角点检测结果不受图像旋转影响,且计算高效、鲁棒性强,对光照变化、轻微噪声有一定容忍度,这也是它被广泛应用的核心原因,但它对尺度变化较为敏感,不同尺寸的角点检测效果差异较大,这是其主要局限。

三、环境准备与核心函数(必记,适配实操)

1. 环境准备(与前文保持一致,降低新手学习成本)

所有操作均基于OpenCV-Python,若未配置环境,执行以下命令一键安装/升级,适配Python 3.7-3.12Windows/Mac/Linux全兼容:

python# 安装/升级OpenCV-Python(核心依赖)pip install opencv-python -U# 安装辅助库(图像显示、数据处理)pip install numpy matplotlib

2. 核心函数:cv2.cornerHarris()(必记参数)

OpenCV已将哈里斯角检测的核心逻辑封装成cv2.cornerHarris()函数,新手只需掌握参数含义,就能快速调用,函数原型及核心参数如下(结合官方文档优化,精准适配Python实操):

pythoncv2.cornerHarris(src, blockSize, ksize, k, dst=None, borderType=cv2.BORDER_DEFAULT)

核心参数详解(新手重点记前4个,后2个默认即可):

src:输入图像,必须是单通道灰度图8位或浮点型),不能是彩色图——这是新手最容易踩的坑;

blockSize:检测窗口的大小(邻域大小),即计算协方差矩阵M时的窗口尺寸,常用值2~10,值越大,检测到的角点越少但更稳定;

ksizeSobel算子的孔径大小(卷积核大小),必须是奇数,常用值3(默认),若图像噪声大,可增大至5

k:哈里斯响应函数中的经验常数,取值范围0.04~0.06,默认0.04k值越小,检测到的角点越多(可能出现误检),k值越大,角点越少但越精准;

dst:输出图像,存储角点检测的响应值,与输入图像大小一致,类型为CV_32FC1(无需手动设置,函数自动生成);

borderType:边界填充类型,默认cv2.BORDER_DEFAULT,无需手动调整。

补充函数:cv2.goodFeaturesToTrack(),可结合哈里斯角检测使用,用于筛选出最优质的角点,去除冗余和误检的角点,后续实操会详细讲解其用法,该函数可通过设置useHarrisDetector参数启用哈里斯检测逻辑。

四、核心实操:哈里斯角检测完整流程(代码可直接复制)

结合前文的梯度计算、图像预处理知识点,我们以国际象棋棋盘(经典角点测试图)为例,实现哈里斯角检测的完整流程,代码附详细解读,新手可直接复制运行,替换自己的图像即可。

1. 基础实操:哈里斯角检测入门(核心流程)

pythonimport cv2import numpy as npimport matplotlib.pyplot as plt# 1. 读取图像并预处理(灰度化+降噪,衔接前文预处理知识点)# 读取彩色图像,转为灰度图(必须是单通道灰度图)img = cv2.imread("chessboard.jpg") # 替换为自己的图像路径gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 高斯平滑降噪(减少噪声对梯度计算的干扰,提升检测精度)gray_blur = cv2.GaussianBlur(gray, (3, 3), sigmaX=1)# 转换为浮点型(cv2.cornerHarris()要求输入可为浮点型)gray_float = np.float32(gray_blur)# 2. 执行哈里斯角检测(核心步骤)blockSize = 2 # 检测窗口大小,常用2~3ksize = 3 # Sobel卷积核大小,必须为奇数,默认3k = 0.04 # 经验常数,默认0.04dst = cv2.cornerHarris(gray_float, blockSize, ksize, k)# 3. 后处理:膨胀操作(让角点标记更明显,便于观察)dst = cv2.dilate(dst, None) # 无需设置卷积核,默认即可# 4. 标记角点(设定阈值,筛选出显著角点,红色标记)# 阈值设为响应值最大值的1%(可调整,值越小,角点越多)img[dst > 0.01 * dst.max()] = [0, 0, 255] # BGR格式:红色# 5. 显示效果(原始图 vs 角点检测结果)plt.figure(figsize=(12, 6))# 原始图像plt.subplot(1, 2, 1)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title("原始图像(国际象棋棋盘)")plt.axis("off")# 角点检测结果plt.subplot(1, 2, 2)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title("哈里斯角检测结果(红色标记角点)")plt.axis("off")plt.tight_layout()plt.show()# 可选:保存检测结果cv2.imwrite("harris_corner_result.jpg", img)

关键说明:

预处理必须做灰度化:若直接输入彩色图,函数会报错,这是新手最容易踩的坑;

高斯平滑不可少:若图像噪声较大,不进行降噪处理,会导致误检(把噪声当成角点);

阈值调整技巧:0.01*dst.max()中的0.01可调整,范围0.01~0.05,值越小,检测到的角点越多,值越大,角点越稀疏(仅保留最显著的角点)。

2. 进阶实操:筛选优质角点(cv2.goodFeaturesToTrack()

基础实操中,可能会检测到一些冗余、微弱的角点,此时可使用cv2.goodFeaturesToTrack()函数,结合哈里斯角检测,筛选出最优质的角点,去除误检和冗余,适配更精准的场景(如图像匹配),代码如下:

pythonimport cv2import numpy as npimport matplotlib.pyplot as plt# 1. 读取图像并预处理img = cv2.imread("chessboard.jpg")gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)gray_blur = cv2.GaussianBlur(gray, (3, 3), sigmaX=1)# 2. 使用cv2.goodFeaturesToTrack()筛选优质角点(启用哈里斯检测)maxCorners = 50 # 最多保留50个优质角点(可调整)qualityLevel = 0.01 # 角点质量阈值(0~1,值越大,角点质量要求越高)minDistance = 10 # 两个角点之间的最小距离(避免相邻冗余角点)# 启用哈里斯角检测,useHarrisDetector=Truecorners = cv2.goodFeaturesToTrack(image=gray_blur,maxCorners=maxCorners,qualityLevel=qualityLevel,minDistance=minDistance,useHarrisDetector=True, # 关键:启用哈里斯角检测k=0.04 # 哈里斯检测的k值,与cv2.cornerHarris()一致)# 3. 标记优质角点(蓝色圆点,比基础实操更精准)corners = np.int0(corners) # 转换为整数坐标(便于绘制)for corner in corners:x, y = corner.ravel() # 提取角点坐标cv2.circle(img, (x, y), 3, (255, 0, 0), -1) # 绘制蓝色实心圆(半径3,厚度-1)# 4. 显示效果(优质角点筛选结果)plt.figure(figsize=(8, 8))plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title("优质角点筛选结果(蓝色标记,无冗余)")plt.axis("off")plt.show()# 可选:保存结果cv2.imwrite("good_harris_corners.jpg", img)

核心优势:cv2.goodFeaturesToTrack()函数会自动过滤掉响应值低、相邻过近的角点,保留最优质的角点,相比基础实操,更适合后续的图像匹配、目标跟踪等场景,也是实际项目中常用的组合方式。

3. 实战拓展:不同场景的参数调优(新手必看)

哈里斯角检测的参数(blockSizeksizek、阈值),需要根据不同图像场景调整,才能达到最佳效果,以下是3种常见场景的调优方案,新手可直接参考:

pythonimport cv2import numpy as npimport matplotlib.pyplot as plt# 读取不同场景的测试图img1 = cv2.imread("chessboard.jpg") # 场景1:棋盘(角点密集、清晰)img2 = cv2.imread("building.jpg") # 场景2:建筑图像(角点为墙体转角、窗户边角)img3 = cv2.imread("natural.jpg") # 场景3:自然场景(角点为树枝分叉,噪声较多)# 定义调优后的参数(分场景)scenes = [(img1, "棋盘场景", 2, 3, 0.04, 0.01), # (图像, 场景名称, blockSize, ksize, k, 阈值系数)(img2, "建筑场景", 3, 3, 0.05, 0.02),(img3, "自然场景", 5, 5, 0.06, 0.03)]# 批量处理不同场景plt.figure(figsize=(15, 5))for i, (img, name, blockSize, ksize, k, thresh_coeff) in enumerate(scenes):gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)gray_blur = cv2.GaussianBlur(gray, (3, 3), sigmaX=1)gray_float = np.float32(gray_blur)# 执行哈里斯角检测dst = cv2.cornerHarris(gray_float, blockSize, ksize, k)dst = cv2.dilate(dst, None)img[dst > thresh_coeff * dst.max()] = [0, 0, 255]# 显示效果plt.subplot(1, 3, i+1)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.title(f"{name}(调优后)")plt.axis("off")plt.tight_layout()plt.show()

调优规律(新手记牢):

角点密集、清晰场景(如棋盘):blockSize=2~3ksize=3k=0.04,阈值系数=0.01(保留更多角点);

角点稀疏、轮廓清晰场景(如建筑):blockSize=3~4ksize=3k=0.05,阈值系数=0.02(过滤微弱角点);

噪声较多、角点模糊场景(如自然场景):blockSize=5~7ksize=5k=0.06,阈值系数=0.03(减少误检,保留显著角点),同时可增加高斯平滑的卷积核大小(如(5,5))。

五、新手必避的5个坑(实操避坑指南)

1:输入图像未做灰度化——直接输入彩色图,cv2.cornerHarris()函数会报错,必须先通过cv2.cvtColor()转为单通道灰度图,这是最基础也最容易踩的坑;

2:未进行降噪处理——图像噪声会干扰梯度计算,导致误检(把噪声当成角点),建议先进行高斯平滑(cv2.GaussianBlur()),尤其是自然场景图像;

3ksize设为偶数——cv2.cornerHarris()ksizeSobel算子孔径大小)必须是奇数,否则函数会报错,常用值35

4k值设置不合理——k值超出0.04~0.06范围,会导致角点过多(k过小)或过少(k过大),新手优先用默认值0.04,再根据场景微调;

5:忽略非极大值抑制——基础实操中未做非极大值抑制,会出现相邻冗余角点,建议使用cv2.goodFeaturesToTrack()函数筛选优质角点,适配实际项目。

六、完整实战代码(一键复制运行,适配所有场景)

整合以上所有实操内容,包含基础检测+优质角点筛选+分场景调优,替换自己的图像路径,即可一键跑通,适合新手直接实操,巩固哈里斯角检测的所有知识点,同时衔接前文系列内容:

pythonimport cv2import numpy as npimport matplotlib.pyplot as plt# 1. 环境验证(可选)print("OpenCV版本:", cv2.__version__)# 2. 读取图像(替换为自己的图像路径,可替换为任意场景图像)img_basic = cv2.imread("chessboard.jpg") # 基础实操图像img_good = cv2.imread("chessboard.jpg") # 优质角点筛选图像img_scene1 = cv2.imread("chessboard.jpg") # 场景1:棋盘img_scene2 = cv2.imread("building.jpg") # 场景2:建筑img_scene3 = cv2.imread("natural.jpg") # 场景3:自然if None in [img_basic, img_good, img_scene1, img_scene2, img_scene3]:print("错误:未找到图像,请检查图像路径!")else:# 3. 基础哈里斯角检测gray_basic = cv2.cvtColor(img_basic, cv2.COLOR_BGR2GRAY)gray_basic_blur = cv2.GaussianBlur(gray_basic, (3, 3), sigmaX=1)gray_basic_float = np.float32(gray_basic_blur)dst_basic = cv2.cornerHarris(gray_basic_float, 2, 3, 0.04)dst_basic = cv2.dilate(dst_basic, None)img_basic[dst_basic > 0.01 * dst_basic.max()] = [0, 0, 255]# 4. 优质角点筛选(启用哈里斯检测)gray_good = cv2.cvtColor(img_good, cv2.COLOR_BGR2GRAY)gray_good_blur = cv2.GaussianBlur(gray_good, (3, 3), sigmaX=1)corners = cv2.goodFeaturesToTrack(gray_good_blur, maxCorners=50, qualityLevel=0.01, minDistance=10,useHarrisDetector=True, k=0.04)corners = np.int0(corners)for corner in corners:x, y = corner.ravel()cv2.circle(img_good, (x, y), 3, (255, 0, 0), -1)# 5. 分场景调优检测scenes = [(img_scene1, 2, 3, 0.04, 0.01),(img_scene2, 3, 3, 0.05, 0.02),(img_scene3, 5, 5, 0.06, 0.03)]scene_results = []for img, blockSize, ksize, k, thresh_coeff in scenes:gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)gray_blur = cv2.GaussianBlur(gray, (3, 3), sigmaX=1)gray_float = np.float32(gray_blur)dst = cv2.cornerHarris(gray_float, blockSize, ksize, k)dst = cv2.dilate(dst, None)img[dst > thresh_coeff * dst.max()] = [0, 0, 255]scene_results.append(img)# 6. 统一显示所有效果plt.figure(figsize=(18, 10))# 第一行:基础检测+优质筛选plt.subplot(2, 4, 1)plt.imshow(cv2.cvtColor(img_basic, cv2.COLOR_BGR2RGB))plt.title("基础哈里斯角检测(红色)")plt.axis("off")plt.subplot(2, 4, 2)plt.imshow(cv2.cvtColor(img_good, cv2.COLOR_BGR2RGB))plt.title("优质角点筛选(蓝色)")plt.axis("off")# 第二行:分场景调优plt.subplot(2, 4, 5)plt.imshow(cv2.cvtColor(scene_results[0], cv2.COLOR_BGR2RGB))plt.title("场景1:棋盘(blockSize=2, k=0.04)")plt.axis("off")plt.subplot(2, 4, 6)plt.imshow(cv2.cvtColor(scene_results[1], cv2.COLOR_BGR2RGB))plt.title("场景2:建筑(blockSize=3, k=0.05)")plt.axis("off")plt.subplot(2, 4, 7)plt.imshow(cv2.cvtColor(scene_results[2], cv2.COLOR_BGR2RGB))plt.title("场景3:自然(blockSize=5, k=0.06)")plt.axis("off")plt.tight_layout()plt.show()# 7. 保存结果(可选)cv2.imwrite("basic_harris_result.jpg", img_basic)cv2.imwrite("good_harris_result.jpg", img_good)cv2.imwrite("scene1_harris.jpg", scene_results[0])cv2.imwrite("scene2_harris.jpg", scene_results[1])cv2.imwrite("scene3_harris.jpg", scene_results[2])

最后总结(衔接系列,强化记忆)

从图像特征、边缘检测,到今天的哈里斯角检测,我们逐步解锁了特征点提取的核心技巧——角点作为图像中最具辨识度的路标,是后续图像匹配、全景拼接、目标跟踪、三维重建的基础,而哈里斯角检测作为最经典、最基础的角点检测算法,是新手入门特征点提取的必经之路。

哈里斯角检测的优势是计算高效、具有旋转不变性,对光照变化和轻微噪声有一定鲁棒性,但它也存在尺度敏感的局限;后续我们将学习更先进的角点检测算法(如SIFTSURFORB),它们在尺度不变性、匹配精度上更有优势,但哈里斯角检测的核心逻辑,是理解这些高级算法的基础。

衔接前文知识点:哈里斯角检测依赖梯度计算(Sobel算子)和图像预处理(高斯平滑),这也再次印证了预处理是所有图像处理任务的前提”——只有做好预处理,才能提升检测精度,减少误检和漏检。

辛苦大家看到这里啦,如果你觉得这篇OpenCV实操教程对你有帮助,麻烦动动小手,点赞+在看,让更多学习计算机视觉、OpenCV的小伙伴看到,一起交流学习、共同进步~

关注【AI与计算机视觉】,后台回复「哈里斯角检测」,即可免费获取本文完整代码、测试素材(含棋盘、建筑、自然场景测试图),还有更多OpenCV实战教程,助力大家快速上手,吃透角点检测全流程!

评论区留言「角点实操」,我们一起打卡练习,互相交流遇到的问题,深耕计算机视觉,解锁更多实战技巧!后续我们将讲解SIFT特征检测算法,衔接今天的角点检测内容,记得持续关注哦~

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 21:56:03 HTTP/2.0 GET : https://f.mffb.com.cn/a/494162.html
  2. 运行时间 : 0.130149s [ 吞吐率:7.68req/s ] 内存消耗:4,714.46kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bdc711babc8fa67ee0b6b2fe819b8e2e
  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.000578s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000666s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001038s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000572s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000562s ]
  6. SELECT * FROM `set` [ RunTime:0.010663s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000677s ]
  8. SELECT * FROM `article` WHERE `id` = 494162 LIMIT 1 [ RunTime:0.006316s ]
  9. UPDATE `article` SET `lasttime` = 1783086963 WHERE `id` = 494162 [ RunTime:0.007370s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.004196s ]
  11. SELECT * FROM `article` WHERE `id` < 494162 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001730s ]
  12. SELECT * FROM `article` WHERE `id` > 494162 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002117s ]
  13. SELECT * FROM `article` WHERE `id` < 494162 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008427s ]
  14. SELECT * FROM `article` WHERE `id` < 494162 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006463s ]
  15. SELECT * FROM `article` WHERE `id` < 494162 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006497s ]
0.131723s