树莓派4B之OpenCV人脸检测实战(从零部署到实时识别)
1. 为什么选择树莓派4B来做这件事如果你和我一样是个对AI和硬件都感兴趣的“折腾党”手头正好有一块树莓派4B那你肯定想过这巴掌大的小电脑除了当个迷你服务器或者智能家居中枢还能干点啥更“酷”的事情我的答案是让它“看见”你并且认出你。没错就是人脸检测。这听起来像是手机或者大型服务器才能干的事但实测下来用树莓派4B跑一个基础的、实时的人脸检测程序不仅完全可行而且体验相当流畅。你可能会有疑问现在云端AI服务那么发达为啥还要在本地、在一个小小的嵌入式设备上折腾我最初也是这么想的但实际动手后才发现本地部署有几个无法替代的好处。首先隐私和安全。你的人脸数据不需要上传到任何云端服务器所有的计算都在你自家的树莓派上完成数据不出门心里最踏实。其次实时性和低延迟。网络传输总会有那么几十毫秒甚至几百毫秒的延迟而本地处理是实打实的“零”延迟这对于一些需要快速响应的互动应用比如一个自动打招呼的门禁至关重要。最后也是最重要的学习的乐趣和掌控感。从零开始看着一堆代码和硬件在你手里变成一个能“看”懂世界的智能体这种成就感是调用一个API无法比拟的。树莓派4B作为这个项目的硬件平台可以说是“刚刚好”。它的性能相比前几代有了质的飞跃四核Cortex-A72处理器和最高8GB的内存我们项目用2GB或4GB版就绰绰有余应付OpenCV的人脸检测这种经典计算机视觉任务性能是足够的。同时它功耗极低可以7x24小时不间断运行体积小巧方便集成到各种有趣的DIY项目里比如智能猫眼、自动拍照门铃、甚至是一个会跟着你转的云台摄像头。所以无论你是想学习嵌入式AI的入门知识还是想为自己的创意项目增加一个“视觉”模块跟着我从零开始在树莓派4B上部署OpenCV并实现实时人脸检测都是一个绝佳的起点。2. 开工前的准备硬件与软件清单在开始敲代码之前咱们得先把“战场”布置好。就像做饭前要备齐食材和厨具一样做嵌入式开发硬件和软件环境是基础。别担心清单里的东西都很常见成本也不高。硬件方面核心当然是树莓派4B。我用的就是最普及的2GB内存版本完全够用。如果你手头是1GB版也能跑但多任务时可能会有点紧4GB或8GB版当然更从容属于“战未来”的选择。接下来是摄像头这是项目的“眼睛”。我强烈推荐使用树莓派官方的CSI摄像头模块因为它和系统的兼容性最好驱动完善即插即用。当然如果你手头有闲置的USB摄像头比如很多旧笔记本拆下来的那种也完全可以OpenCV通常都能识别只是可能需要额外安装一些库。我实测过几款常见的罗技C270、C920在树莓派上都能正常工作。为了让树莓派运行起来你还需要一张Micro SD卡建议容量16GB或以上Class 10的速度等级能保证系统运行流畅。一个5V/3A的Type-C电源是必须的树莓派4B对供电要求比较高劣质电源可能导致运行不稳定。最后是显示和交互设备你可以准备一个HDMI接口的显示器、一套USB键鼠这是最直观的方式。但更常用的方式是无头模式即不接显示器通过家里的Wi-Fi网络用SSH从你的电脑远程登录到树莓派上进行操作这对于后续的开发和调试来说更方便。所以确保你的树莓派能连接到家里的路由器通过网线或Wi-Fi。软件方面第一步是给SD卡“烧录”操作系统。我们选择Raspberry Pi OS以前叫Raspbian这是树莓派基金会官方维护的系统对硬件支持最完美。去官网下载“Raspberry Pi OS with desktop”的镜像文件即可。烧录工具我习惯用Raspberry Pi Imager这个工具是官方的跨平台Windows、macOS、Linux都有界面简单还能在烧录前直接配置Wi-Fi和SSH非常省事。烧录完成后把SD卡插入树莓派通电启动你的微型电脑就准备就绪了。3. 搭建核心环境安装OpenCV与Python系统跑起来了接下来就要安装我们项目的两大核心Python和OpenCV。树莓派OS默认就安装了Python 3我们直接用它就好。打开终端如果你用桌面版就在菜单里找Terminal如果是SSH远程连接后就是终端界面我们先更新一下软件源列表确保安装的都是最新版本的软件包。sudo apt update sudo apt upgrade -y这个过程可能会花点时间取决于你的网络速度。更新完成后我们安装一些编译和运行OpenCV所必需的开发工具和库文件。这些是“地基”必须打牢。sudo apt install -y build-essential cmake pkg-config sudo apt install -y libjpeg-dev libtiff5-dev libjasper-dev libpng-dev sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt install -y libxvidcore-dev libx264-dev sudo apt install -y libfontconfig1-dev libcairo2-dev sudo apt install -y libgdk-pixbuf2.0-dev libpango1.0-dev sudo apt install -y libgtk2.0-dev libgtk-3-dev sudo apt install -y libatlas-base-dev gfortran sudo apt install -y libhdf5-dev libhdf5-serial-dev libhdf5-103 sudo apt install -y libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 sudo apt install -y python3-dev python3-pip python3-numpy这一长串命令看起来吓人但其实就是在安装各种图像编解码、视频流、图形界面和数学运算的底层库。一条条执行或者复制粘贴一起执行都可以。完成后我们通过Python的包管理工具pip来安装OpenCV。这里有个小技巧直接安装OpenCV-Python的预编译轮子这比从源码编译要快得多省去了数小时的编译时间。pip3 install opencv-python4.5.3.56 pip3 install opencv-contrib-python4.5.3.56我指定了4.5.3.56这个版本因为它是一个比较稳定且与树莓派OS兼容性很好的版本。安装完成后我们可以写一个简单的Python脚本来测试OpenCV是否安装成功。import cv2 print(cv2.__version__)在终端里用python3 test_opencv.py运行如果成功打印出版本号“4.5.3”那么恭喜你最复杂的环境配置部分已经顺利完成了整个过程你可能需要喝杯咖啡等待一下但一旦完成后面就是一马平川了。4. 理解核心武器Haar Cascade分类器是什么现在环境齐备我们要请出本次项目的“主角”——Haar Cascade分类器。在深入代码之前花几分钟理解它的工作原理对你后续调优和解决问题会有巨大帮助。你可以把它想象成一个非常高效且专注的“人脸过滤器”。它的核心思想其实很直观利用特征对比来识别物体。Haar特征是一种简单的矩形特征比如在脸上眼睛区域通常比鼻梁区域颜色深因为眼窝那么一个覆盖眼睛和鼻梁的矩形其内部像素的灰度值之和就会有明显差异。OpenCV的创造者们设计了一系列这样的基础矩形特征模板。但是一张图片里可能有成千上万个这样的矩形区域如何快速判断哪个区域像人脸呢这就用到了级联和AdaBoost这两个关键技术。级联可以理解为一条多级的“检测流水线”。图片首先进入第一级“过滤器”这一级规则非常简单、计算极快目的是快速排除掉图片中绝大部分明显不是人脸的背景区域。只有通过第一级的区域才会被送到规则更复杂、计算量稍大的第二级去判断。如此一级级筛选越到后面的级数判断越精细但需要判断的候选区域也越少。这种“由粗到细”的机制使得Haar Cascade在保持较高检测精度的同时速度非常快特别适合像树莓派这样的资源受限设备进行实时检测。AdaBoost算法则是用来训练每一级“过滤器”里具体规则的“教练”。它通过分析大量人脸和非人脸的图片样本自动学习出哪些矩形特征组合在一起最能有效区分“是人脸”和“不是人脸”并给这些特征赋予不同的权重。最终这些训练好的规则或者说“弱分类器”的集合就被保存成了一个XML文件也就是我们代码里要加载的haarcascade_frontalface_default.xml。这个文件就是OpenCV官方为我们预先训练好的人脸检测模型。理解了这些你再回头看代码里那个detectMultiScale函数就会明白它内部正是在执行这套高效的级联检测流程。5. 代码逐行详解从摄像头到人脸框理论懂了我们来看实战代码。我把完整的代码贴出来并逐段加上详细的“白话文”注释保证你每一行都能看懂。# 导入必需的库 import numpy as np # 科学计算库OpenCV依赖它来处理图像数据 import cv2 # 我们的核心OpenCV库 # 加载预训练的人脸检测模型 # 这行代码创建了一个级联分类器对象并告诉它使用哪个规则文件。 # 你需要确保这个XML文件face_detector.xml和你的Python脚本在同一个目录下。 face_cascade cv2.CascadeClassifier(face_detector.xml)首先导入两个库。numpy是Python里做数值计算的基石OpenCV用它将图片表示成多维数组。cv2就是OpenCV本身。接着我们创建了一个CascadeClassifier分类器对象并加载了那个关键的XML模型文件。这个文件你可以从OpenCV的GitHub仓库或者安装目录里找到我建议直接下载下来放到和脚本相同的文件夹里这样路径最简单。# 初始化摄像头 # 参数0代表使用系统默认的第一个摄像头。如果你接了多个USB摄像头可以尝试1,2等。 cap cv2.VideoCapture(0) # 设置摄像头捕获画面的分辨率可选但建议设置以稳定性能 # 树莓派4B处理640x480的图像非常轻松设为更高分辨率会加重负担。 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)VideoCapture对象用于从摄像头获取视频流。cap.set这两行不是必须的但我强烈建议加上。它固定了摄像头采集的图像尺寸避免了自动调整分辨率带来的性能波动让后续处理速度更稳定。640x480对于人脸检测来说清晰度完全足够。# 进入主循环一帧一帧地处理视频 while True: # 读取一帧图像 # ret是一个布尔值如果读取帧成功则为True失败如摄像头断开则为False。 # frame就是读取到的图像数据是一个numpy数组。 ret, frame cap.read() if not ret: print(无法从摄像头读取帧退出) break # 将彩色图像转换为灰度图像 # Haar Cascade检测器工作在灰度图像上这样做可以大幅减少计算量。 gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)程序进入一个无限循环直到我们按下退出键。cap.read()每次从摄像头抓取一帧最新的画面。这里有一个关键操作转换为灰度图。因为人脸检测的Haar特征计算的是像素灰度的差值彩色信息RGB对于这个任务来说是冗余的转换成灰度能直接将数据量减少三分之二显著提升处理速度。# 核心步骤在灰度图上检测人脸 # detectMultiScale是执行检测的函数它返回一个列表每个元素是一个矩形框(x, y, w, h)。 faces face_cascade.detectMultiScale( gray, # 输入的灰度图像 scaleFactor1.1, # 图像缩放比例用于构建图像金字塔稍后详细解释 minNeighbors5, # 构成检测目标的相邻矩形的最小数量用于过滤误检 minSize(30, 30) # 目标的最小尺寸比这更小的矩形会被忽略 )detectMultiScale是整个程序的心脏所有人脸检测的魔法都在这里发生。它扫描图像并返回所有检测到的人脸区域的位置和大小每个区域用一个矩形表示左上角x坐标左上角y坐标宽度高度。它的几个参数直接影响检测效果和性能我们马上会专门讲。# 遍历检测到的每一个人脸矩形框 for (x, y, w, h) in faces: # 在原彩色帧上用绿色矩形框标出人脸位置 # 参数含义图像左上角坐标右下角坐标颜色(B,G,R)线宽 cv2.rectangle(frame, (x, y), (xw, yh), (0, 255, 0), 2) # 在窗口中显示处理后的帧 cv2.imshow(Face Detection - Raspberry Pi 4B, frame) # 等待键盘输入如果按下q键则退出循环 # waitKey(1)表示等待1毫秒这样既能及时响应按键又不至于让循环卡住。 if cv2.waitKey(1) 0xFF ord(q): break检测到的人脸坐标存放在faces列表里。我们用for循环遍历这个列表对每一个矩形使用cv2.rectangle函数在原始的彩色帧frame上画一个绿色的框。然后cv2.imshow会创建一个窗口把画好框的图像显示出来。最后检查是否有按键‘q’被按下如果有就跳出循环结束程序。# 释放摄像头资源并关闭所有OpenCV创建的窗口 cap.release() cv2.destroyAllWindows()退出循环后一定要记得“打扫战场”。cap.release()释放摄像头设备让其他程序可以继续使用。cv2.destroyAllWindows()关闭所有显示图像的窗口。养成良好的资源管理习惯在嵌入式开发中很重要。6. 调参实战让检测又快又准的关键参数代码跑起来你可能马上会遇到问题要么框得不准把窗帘褶皱也当成了脸要么真正的人脸又没检测出来或者程序跑起来像幻灯片一样卡。别急这大概率是detectMultiScale里那几个参数没调好。它们就像收音机的调频旋钮微调一下效果立竿见影。第一个关键参数scaleFactor缩放因子默认1.1这个参数控制着如何构建“图像金字塔”。因为人脸距离摄像头远近不同在图像中显示的大小也不同。为了检测不同大小的人脸算法不是把检测窗口缩放到各种尺寸去扫描原图那样太慢而是将原图层层缩小形成一个金字塔状的图像集合然后用固定大小的窗口去扫描每一层。scaleFactor就决定了每一层图像缩小多少。比如scaleFactor1.1意味着下一层图像是上一层的1/1.1约91%。值越小如1.01金字塔层数越多对不同大小人脸的检测越精细但计算量会暴增速度变慢。值越大如1.4层数少检测快但可能会漏掉一些尺寸介于两层之间的人脸。在树莓派上我建议从1.1到1.3之间尝试在速度和检出率之间找一个平衡。如果你主要检测距离固定的人脸比如门禁可以适当调大。第二个关键参数minNeighbors最小邻居数默认3或5这个参数是抑制误检、提高准确度的关键。在检测过程中同一个真实人脸可能会被邻近的多个检测窗口以轻微不同的位置和大小重复检测到。minNeighbors就像一个“投票”门槛。假设它设为5那么只有当某个候选矩形区域周围在尺度空间和位置空间上有至少5个同样检测到人脸的邻近矩形时它才会被最终确认为一个有效的人脸。值调高比如10或15误检把非人脸物体框出来会大大减少结果更可靠但可能会把一些不太明显的人脸如侧脸、部分遮挡给过滤掉。值调低比如1或2更多的人脸候选会被保留召回率提高但你会发现画面里框框乱飞误检增多。在树莓派上室内光线良好时设为5是一个不错的起点。如果环境复杂、干扰物多可以尝试提高到7或8。第三个关键参数minSize最小目标尺寸默认(0,0)这个参数非常实用用于设定你感兴趣的人脸的最小尺寸。比如你的摄像头对着整个房间你只关心画面中央较大的人脸而不想检测远处墙上照片里的小人脸就可以设置minSize(100, 100)。这样任何宽度或高度小于100像素的检测结果都会被直接忽略。这能有效减少不必要的计算和误检显著提升程序性能。你可以根据你的摄像头分辨率和人脸在画面中的预估大小来设定这个值。我自己的经验是在树莓派4B上针对640x480分辨率的视频流一套比较均衡的参数是scaleFactor1.2,minNeighbors5,minSize(50, 50)。你可以把这个作为基线然后根据实际场景微调。调参的过程就是你和你的树莓派“沟通”让它更好地理解你所处环境的过程。7. 部署与运行让程序在树莓派上飞起来代码和参数都准备好了现在我们要把它部署到树莓派上并运行。我假设你已经通过SSH远程连接到了树莓派或者正坐在它的桌面环境前操作。首先用你喜欢的文本编辑器如nano、vim或者桌面版的Thonny创建一个新文件比如叫face_detection.py把前面我们详解的代码完整地复制进去。记住一定要把下载好的haarcascade_frontalface_default.xml模型文件放在和这个Python脚本同一个目录下。你可以通过scp命令从你的电脑上传或者在树莓派上直接用wget从网上下载。# 假设你已经在树莓派上进入你准备存放项目的目录例如/home/pi/Documents cd /home/pi/Documents # 使用wget下载OpenCV官方的人脸检测模型文件确保网络连通 wget https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml现在你的目录里应该有两个文件face_detection.py和haarcascade_frontalface_default.xml。在运行前我们还需要确保树莓派有权限访问摄像头。如果是CSI摄像头需要在树莓派配置中启用它。# 运行树莓派配置工具 sudo raspi-config在配置界面中选择Interface Options-Camera-Yes来启用摄像头接口然后重启树莓派。对于USB摄像头通常插上就能被系统识别为/dev/video0。重启后再次进入你的项目目录运行程序python3 face_detection.py如果一切顺利一个名为“Face Detection - Raspberry Pi 4B”的窗口会弹出里面是摄像头实时画面。当你把脸凑到摄像头前一个绿色的矩形框应该会稳稳地套在你的脸上跟着你移动。按下键盘上的q键程序会退出。可能遇到的坑与解决方案报错cv2.error: OpenCV(4.5.3) :-1: error: (-5:Bad argument) in function CascadeClassifier这通常是因为模型文件路径不对。检查face_detector.xml文件名是否拼写正确以及是否真的和脚本在同一目录。可以使用绝对路径如/home/pi/Documents/haarcascade_frontalface_default.xml。报错cv2.error: OpenCV(4.5.3) :-1: error: (-215:Assertion failed) !empty() in function detectMultiScale这通常是模型文件加载失败可能是文件损坏或者路径问题。重新下载模型文件试试。程序运行巨卡帧率很低首先检查摄像头分辨率是否设置过高尝试在代码中将cap.set那两行注释掉让OpenCV自动选择可能更低的分辨率。其次重点调整scaleFactor和minSize参数增大scaleFactor如1.3和设置合理的minSize如(80,80)能极大提升速度。检测框抖动或者时有时无这可能是光线不足、人脸角度过大或者minNeighbors参数设置不当。改善照明条件尝试调低minNeighbors如到3看看是否能稳定检测但同时要观察误检是否增多。当绿色的框稳稳锁定你的脸庞时那一刻的成就感就是对我们所有努力最好的回报。这个小小的绿色方框是树莓派这个“机器大脑”理解视觉世界的第一步。通过这个项目你不仅学会了部署和调参更重要的是理解了从图像采集、预处理、特征检测到结果输出的完整链路。你可以尝试修改矩形框的颜色、粗细或者在框旁边加上文字标签。更进一步你可以结合GPIO当检测到人脸时让一个LED灯亮起或者驱动舵机转动这样就从单纯的软件检测升级成了一个能与物理世界交互的完整嵌入式视觉系统。

相关新闻

我让 AI 帮我写 Git Commit,同事看了都以为我是规范狂魔

我让 AI 帮我写 Git Commit,同事看了都以为我是规范狂魔

写代码的时候,很多程序员都会遇到一个小问题: commit message 写什么? 常见情况是这样的: fix bug update code 修改了一点东西问题是: commit 不规范回溯历史困难团队协作混乱 后来我开始尝试把这件事交给 AI。 结果发…

2026/5/17 12:28:42 阅读更多 →
Ubuntu单用户模式下的文件权限修改实战

Ubuntu单用户模式下的文件权限修改实战

1. 为什么你需要掌握单用户模式修改文件权限? 朋友们,不知道你们有没有遇到过这种情况:手头一台Ubuntu服务器,你是唯一的系统管理员,结果某天脑子一抽,把sudoers文件改错了,或者干脆把root密码给…

2026/5/17 12:28:39 阅读更多 →
STM32与ASR01语音模块的串口通信与中断控制实战

STM32与ASR01语音模块的串口通信与中断控制实战

1. 从零开始:认识你的硬件伙伴 大家好,我是老张,一个在嵌入式圈子里摸爬滚打了十多年的老工程师。今天想和大家聊聊一个非常有意思、也特别实用的项目:如何用我们熟悉的STM32单片机,去驱动和控制一个ASR01语音模块。这…

2026/5/17 12:28:37 阅读更多 →

最新新闻

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
Ubuntu 22.04 实时监控:htop 与 top 的 5 项关键指标深度解析与实战

Ubuntu 22.04 实时监控:htop 与 top 的 5 项关键指标深度解析与实战

Ubuntu 22.04 实时监控:htop 与 top 的 5 项关键指标深度解析与实战当服务器负载突然飙升,或是应用程序响应变慢时,系统管理员的第一反应往往是打开终端查看资源占用情况。在 Ubuntu 22.04 中,top和htop这两个经典工具仍然是诊断性…

2026/7/6 23:59:07 阅读更多 →
msconfig 处理器个数设置详解:从1核到N核的3种应用场景与风险

msconfig 处理器个数设置详解:从1核到N核的3种应用场景与风险

msconfig处理器个数设置深度解析:从原理到实战的完整指南引言:揭开处理器个数设置的神秘面纱在Windows系统的众多隐藏功能中,msconfig中的"处理器个数"设置可能是最常被误解的一个。许多用户误以为这个选项能"开启"更多处…

2026/7/6 23:59:07 阅读更多 →
Java应用红蓝对抗实战:从反序列化漏洞到内存马注入的攻防剖析

Java应用红蓝对抗实战:从反序列化漏洞到内存马注入的攻防剖析

1. 项目概述:为什么Java安全是红蓝对抗的焦点在当前的网络安全攻防演练,也就是我们常说的红蓝对抗中,Java应用一直是双方交锋的核心战场。这不仅仅是因为Java在企业级应用、金融系统和大型互联网后台中无处不在,更因为其技术栈的复…

2026/7/6 23:59:07 阅读更多 →
RHEL 8.10 ISO 镜像下载与验证:3步完成官方订阅账户注册与SHA-256校验

RHEL 8.10 ISO 镜像下载与验证:3步完成官方订阅账户注册与SHA-256校验

RHEL 8.10官方镜像获取与安全验证全流程指南 1. 为什么选择官方渠道获取RHEL镜像? 在企业级Linux发行版中,Red Hat Enterprise Linux(RHEL)因其卓越的稳定性和长期支持而备受青睐。然而,许多技术人员在获取安装镜像时…

2026/7/6 23:57:01 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻