Windows 10下使用编译并使用openCV
liuian 2025-09-03 03:30 7 浏览
1. Windows系统下OpenCV及第三方库文件的使用与下载
如果没有特殊要求,在Windows系统下可以直接使用OpenCV的预编译版本。在github的opencv项目release中选择相应release版本即可。然而,由于版权原因,预编译的opencv并没有包含诸多第三方工具,因此,如果要使用一些第三方工具,或者要在linux系统下使用openCV的话,还需要自己从源码进行编译。
1.1 OpenCV下载与安装
OpenCV可以从官网下载,本文使用openCV 4.50版本。下载完成后点击安装,该安装包实际上是指打包的压缩文件,选择路径解压即可,本文将opencv解压安装到D:\lib路径下,解压后的opencv所在目录为D:\lib\opencv。在opencv目录下,source为源文件的文件夹,build为编译文件的文件夹,包括了VC14和VC15的预编译文件。如果要直接使用编译好的opencv,引用build目录下的文件即可。本文在opencv目录下新建一个rebuild目录,用来保存自行编译后的文件。
1.2 OpenCV_Contrib库下载与安装
要安装第三方工具,需要从github上下载相应的opencv_contrib版本,这里从opencv-contrib仓库的release版本中下载opencv_contrib-4.5.0版本.将解压后的opencv_contrib-4.5.0文件夹直接放到opencv的source目录下,以备后续编译使用。
1.3 OpenCV_3rdParty库下载与安装
在OpenCV的编译过程中,还需要一些第三方库支持,这些库文件包含在opencv_3rdparty库中,该库不同的分支(branch)文件对应了编译过程中可能需要的ippicv、ffmpeg以及dnn等第三方库,如果要安装对应的工具,则需要下载对应的库文件。需要注意的是,第三方库文件的下载过程已经写在opencv的编译文件中了,但是由于国内网络环境的原因,直接下载通常很难成功,这也是编译失败的主要原因之一。要使用预先下载的第三方库文件代替直接下载。
从github上下载的opencv_3rdparty库,默认的readme分支仅包含简单的说明文档,可以使用git branch命令查看不同分支,并使用git checkout <分支名>切换到不同分支,以便将对应文件复制出来。在opencv/source/3rdparty文件夹下可以看到第三方工具文件夹,在各文件夹下有对应的编译文件,例如ffmpeg文件夹下的编译文件ffmpeg.cmake,在ffmpeg.cmake文件中,可以找到需要下载的文件版本例如ffmpeg/master_20200908。在opencv_3rdparty库中checkout相应的分支即可找到对应文件。
OpenCV编译过程中下载的临时文件位于opencv目录下的.cache目录中,可以在opencv目录下新建.cache目录,针对不同模块新建包括ffmpeg、ippicv、xfeatures2d等目录,将上一步中3rdparty库对应分支的文件复制到对应的文件夹下即可。需要注意的是,OpenCV在缓存文件时并不是按照原始的文件名缓存在,而是在前面加上了md5校验字符串,因此在复制文件时要将文件重命名。例如在ffmpeg.cmake文件中有以下内容:
...
ocv_update(FFMPEG_FILE_HASH_BIN64 "cf5dba83edf8619f57ccff4edb989c62")
那么就需要将原始的
opencv_videoio_ffmpeg_64.dll文件重命名为
cf5dba83edf8619f57ccff4edb989c62-opencv_videoio_ffmpeg_64.dll。典型的文件夹结构如下图。如果在编译过程中出现下载错误,可以检查对应安装包的编译文件,看看是否与所需要的文件版本内容一致。
另一个选择是将下载的第三方文件放在特定文件夹中,并找到每个CMakelist.txt文件,将其中
https://raw.githubusercontent.com....目录修改为存放对应文件的位置如
file:///D:/lib/3rdparty...。
2.编译环境和工具安装
2.1 安装MinGW-W64的msys32发行版
MinGW-w64 是一个Windows系统下支持GCC编译器的工具,它支持64位和32位操作系统。使用MinGW-W64,可以替代微软的VC编译器来编译c和c++项目。MSYS2是一个集成了pacman和MinGW-w64的Cygwin升级版的工具,用于在Windows系统下提供接近原生的Linux工具链。通过msys2集成的pacman包管理工具,可以方便地安装和管理包,如果你熟悉Arch Linux,使用Pacman工具会感到格外方便。
由于网络环境的原因,MinGW-w64在国内使用很不方便,经常出现无法更新软件的情况,因此这里使用包含了MinGW-w64的msys2发行版。
从清华大学开源网站msys2下载地址下载msys2后采用默认设置安装,安装在C:\msys64目录下。安装完成后,打开C:\msys64\etc\pacman.d目录并修改以下三个文件,以将msys2的软件源配置为清华镜像,加快下载速度。
#编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
#编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
#编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
打开C:\msys64\mingw64.exe,输入以下命令以安装完整的64位工具链,也可以按照toolchain下面的命令,单独安装gcc,g++和gdb三个工具,如果要安装32位工具,则使用mingw32.exe和对应的mingw32与对应的i686相关工具。本文安装64位工具链,安装完成后,在mingw64.exe的命令行下输入gcc --version、g++ --version或者gdb --version可以看到相应版本。
#安装64位工具和make工具
pacman -S mingw64/mingw-w64-x86_64-toolchain
pacman -S mingw64/mingw-w64-x86_64-make
#上述命令包含了以下3个包,因此下面3个不需要再另外安装
pacman -S mingw64/mingw-w64-x86_64-gcc
pacman -S mingw64/mingw-w64-x86_64-g++
pacman -S mingw64/mingw-w64-x86_64-gdb
#安装32位工具
pacman -S mingw32/mingw-w64-i686-toolchain
pacman -S mingw32/mingw-w64-i686-make
pacman -S mingw32/mingw-w64-i686-gcc
pacman -S mingw32/mingw-w64-i686-g++
pacman -S mingw32/mingw-w64-i686-gdb
#pacman常用的操作指令
pacman -Sy #更新软件包数据
pacman -R package-name #删除软件包
pacman -S package-name #安装软件包
pacman -Syu #更新所有
pacman -Ss xx #查询软件xx的信息
要在系统命令行中使用gcc等命令,还需要将minGW-W64添加到windows的环境变量中。在windows控制面板-->系统-->高级系统设置-->环境变量下,双击path参数并新建环境变量,将以下路径添加到环境变量中(如果要使用32位的msys2,路径也要相应地修改为32位的目录)。环境变量配置完成后,在windows命令行或者powershell中输入,输入gcc --version、g++ --version或者gdb --version可以看到相应版本。
注意:如果配置环境变量时命令行已经在运行,需要关掉命令行并重新打开,才能使配置生效。
C:\msys64
C:\msys64\mingw64\bin
C:\msys64\mingw64\x86_64-w64-mingw32\bin
2.2 安装CMAKE工具
CMake 是一个开源的跨平台工具系列,旨在构建、测试和打包软件。在CMaje官网下载对应的编译工具进行安装,并将安装路径写入环境变量。在命令行输入cmake --version可以看到cmake版本信息。安装完成后,也可以通过CMake自带的图形界面Cmake GUI进行文件编译。相比命令行而言,操作更简单。
2.3 安装python2.7
OpenCV编译需要python的numpy工具包,如果要编译OpenCV的python接口,同样需要安装python,虽然目前python已经停止对python2的支持,但和大多数历史遗留项目一样,opencv仍然需要安装python2版本。在python官网下载python2的最新发行版python2.7.18并进行安装,安装时选中最后一条“将python写入环境变量”,否则在安装完成后需要手动将python以及python的script目录添加的环境变量中。安装完成后在命令行输入python -V可以看到python的版本信息。
修改pip镜像为清华开源站,在命令行输入以下两行,更换python安装库位置,以提高包下载速度,更换完成后通过pip命令安装numpy包。在编译OpenCV的过程中,可能还需要python的debug文件,在python官网下载对应的debug info文件并解压复制到python安装目录的DLLs目录下。如果不需要编译python相关内容,可以跳过该步骤。
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#安装numpy
pip install numpy
如果安装了msys2,那么在安装python2.7之前,输入python -V,是会显示python3的版本信息的,这是因为minGW64的bin目录中已经有了python3的文件,但是这个python没有安装pip,是不完整的,如果要为minGW64安装pip,需要在该目录下运行
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py #下载pip安装脚本
.\pip3.8.exe install pip #安装pip
注意,由于系统路径中python已经指定为2.7版本,要使用该python3,需要使用完整的路径加程序名称。
2.4 安装JDK和Ant
如果要编译Java环境相关内容,还需要安装和配置JDK和Apache-ant,下载JDK的windows版本并使用默认设置安装,下载ant的可执行文件binary版本,并解压缩,本文解压缩到D:\lib\apache-ant-1.10.9目录下,并将该目录和bin子目录添加到环境变量中。在命令行中输入java和ant可以看到java命令行帮助和ant编译出错(因为没有xml文件)信息,即说明安装完成。如果不需要安装Java相关内容,则不需要安装上述工具。
3. OpenCV编译
打开CMake(cmake-gui),输入路径(where is the source code)选择opencv的源代码路径D:\lib\opencv\sources,输出路径(where to build the binary)选择第一步新建的rebuild目录D:\lib\opencv\rebuild。
点击左下角Configure,在编译器选项中选择MinGW Makefiles,下面选择Specify native compilers,以使用MinGW64进行编译,如果电脑安装有Visual Studio也可以选择相应的Visual Studio编译器进行编译。
在下一步的compiles中,c语言选择
C:/msys64/mingw64/bin/gcc.exe,c++选择C:/msys64/mingw64/bin/g++.exe。点击确定后,系统会开始尝试进行配置,第一次配置完成后,往往会出现很多红色错误,需要一一解决。在该步骤还可能出现找不到项目文件或编译器的错误,可以检查配置过程输入文件,往往是文件路径错误,或者未安装make工具等情况造成的。在这里需要调整部分参数配置,或者添加、修改参数。
- Add Entry按钮可以添加编译参数,添加参数时选择参数类型,布尔量通过打勾选择有或无,字符串和路径分别输入对应值。
- Search框可以输入参数的一部分来过滤和搜索变量,以便于修改
需要调整的配置包括:
- OPENCV_ENABLE_ALLOCATOR_STATS,取消选择,否则可能出现vs_version.rc.obj错误
- BUILD_opencv_world选项可以打开,该选项将opencv编译成一个包
- OPENCV_ENABLE_NONFREE选项打开,以安装contrib文件包内容
- OPENCV_EXTRA_MODULES_PATH选项输入contrib包的modules目录D:\lib\opencv\sources\opencv_contrib-4.5.0\modules。
- 修改CMAKE_INSTALL_PREFIX参数为D:/lib/opencv/rebuild/mingw64以更改安装目录
- 取消BUILD_TESTS和BUILD_Opencv_python_tests。
配置完成后再点击Configure按钮,然后点击Generate按钮。
注意:从命令行进入D:\lib\opencv\rebuild目录,输入mingw32-make install -j16进行编译。注意j后面的数字表示编译线程数,一般为4且不能超过计算机支持的最大线程数。在多线程编译的情况下,有时错误信息会被覆盖掉,从而无法及时找到编译出错的信息,这种时候可以通过mingw32-make install -j1将编译线程数改为1,以便在编译出错时及时停止编译,以处理出错信息。
4. 在Visual Studio中使用OpenCV
在Visual Studio中使用OpenCV,可以直接使用预编译版本下的VC14、VC15版本,也可以参照上述步骤重新编译。部分Visual Studio与Visual C++版本对应关系如下表,在实践中,VC15的编译版本也可以在Visual Studio 2019中使用:
Visual Studio 版本Visual C++ 版本VS 6.0VC 6.0VS 2013VC 12VS 2015VC 14VS 2017VC 15VS 2019VC 16
- 将编译文件的bin目录D:\lib\opencv\build\x64\vc15\bin添加到环境变量中。
- 新建Visual Studio空项目。在Resource Files上右键单击Add添加New Item,创建一个main.cpp文件。
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[]) {
const char* imagename = "D:\\Pictures\\Camera Roll\\digitalmeter1.jpg";//此处为你自己的图片路径
//从文件中读入图像
Mat img = imread(imagename, 1);
//如果读入图像失败
if (img.empty()) {
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//显示图像
imshow("image", img);
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}
- 在项目资源上右键->属性,在VC++目录(VC++ Directory)的包含目录(include Directories)中添加
D:\lib\opencv\build\include和D:\lib\opencv\build\include\opencv2。 - 在库目录(Library Directories)中添加D:\lib\opencv\build\x64\lib。
- 在链接器(Linker)的输入(Input)中,添加D:\lib\opencv\build\x64\lib下的opencv_world450d.lib,对应编译文件的debug模式,如果要编译release版本,则需要选择不带d的opencv_world450.lib文件。
编译并运行项目,如果没有错误,则可以显示图像内容。
5. 在VS Code中使用OpenCV
要在VS Code中使用OpenCV,需要安装VScode的c/c++语言扩展插件,然后在项目文件夹下新建main.cpp文件,文件内容可与前节相同,根目录下新建.vscode文件夹(也可以按照官方文档指引,通过Terminal->Config Default Building Task命令新建该文件夹并在其中生成tasks.json文件),然后在其中新建tasksjson、lauch.json和c_cpp_properties.json三个文件。选择Windows系统的VC编译工具cl.exe和mingw64进行编译时,编译选项略有不同。两种不同编译工具下的文件内容分别如下:
5.1 VC编译器
c_cpp_properties.json
{
"configurations": [
{
"name": "win",
"includePath": [
"${workspaceFolder}/**",
"C:\\lib\\opencv\\build\\include",
"C:\\lib\\opencv\\build\\include\\opencv2" ],
"defines": ["_DEBUG"],
"compilerPath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.16.27023\bin\\Hostx64\\x64\\cl.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}
tasksjson
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/utf-8",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}",
"/DYNAMICBASE",
"C:\\lib\\opencv\\build\\x64\\vc15\\lib\\opencv_world450.lib"
],
"problemMatcher": ["$msCompile"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
lauch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "cl.exe build and debug active file",
"type": "cppvsdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"preLaunchTask": "cl.exe build active file"
},
]
}
5.2 mingw64编译器
c_cpp_properties.json
{
"configurations": [
{
"name": "win",
"includePath": [
"${workspaceFolder}/**",
"D:\\lib\\opencv\\rebuild\\install\\include",
"D:\\lib\\opencv\\rebuild\\install\\include\\opencv2" ],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"compilerPath": "C:\\msys64\\mingw64\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
tasksjson
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++.exe build active file",
"command": "C:\\msys64\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"-std=c++11",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-I", "D:\\lib\\opencv\\rebuild\\install\\include",
"-I", "D:\\lib\\opencv\\rebuild\\install\\include\\opencv2",
"-L", "D:\\lib\\opencv\\rebuild\\install\\x64\\mingw\\lib",
"-l", "libopencv_core450",
"-l", "libopencv_imgproc450",
"-l", "libopencv_imgcodecs450",
"-l", "libopencv_video450",
"-l", "libopencv_ml450",
"-l", "libopencv_highgui450",
"-l", "libopencv_objdetect450",
"-l", "libopencv_flann450",
"-l", "libopencv_video450",
"-l", "libopencv_photo450",
"-l", "libopencv_videoio450"
],
"options": {
"cwd": "C:\\msys64\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
lauch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "g++.exe build active file",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
]
}
参考文献
- [1] 再谈OpenCV Contrib编译与安装
- [2] 将 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803)
- [3] VSCODE 配置cl.exe编译器
- [4] CL编译器和LINK编译器的使用方法
- [5] Configure VS Code for Microsoft C++
- [6] CMake+VS+opencv/opencv_contrib 环境配置
- [7] VisualStudio2019安装配置OpenCV的C++环境
相关推荐
- python环境怎么搭建?小白看完就会!简简单单
-
很多小伙伴安装了python不会搭建环境,看完这个你就会了Python可应用于多平台包括Linux和MacOSX。你可以通过终端窗口输入"python"命令来查看本地是否...
- 手把手教本地部署Xinference + deepseek-R1、reranker-v2、bge-m3
-
Xinference作为本地AI推理框架,相较于Ollama和其他推理方案,有以下几个核心优势:1.多模型支持。Xinference兼容大量LLM(大语言模型),不仅支持LLaMA...
- Windows 10下使用编译并使用openCV
-
1.Windows系统下OpenCV及第三方库文件的使用与下载如果没有特殊要求,在Windows系统下可以直接使用OpenCV的预编译版本。在github的opencv项目release中选择相应r...
- Windows环境CMake学习笔记(一)_windows下cmake使用
-
前言CMake是C++的必学部分,本篇文章从安装环境开始,通过使用CMake构建一个最简单的cpp项目和g++直接编译作对比了解CMake的构建过程,为接下来深入学习CMake打下基础。一、系统环境操...
- Docker 安装教程_docker安装shinobi
-
Docker概述与安装&Dockerfile文件一、Docker概述Docker是一个开源的容器化平台,它允许开发者将应用及其依赖打包到轻量级、可移植的容器中,并能在任何支持Docker...
- 【直播流】RTSP拉流转推RTMP_rtmp推流和rtsp拉流区别
-
背景:从第三方协调了几路慢直播,直播流的协议有RTSP、FLV和HLS。不过,本方播放工具只能稳定地播放RTMP流。(本次测试环境:Windows10)步骤概述:安装FFmpeg,用于拉流和转码推流。...
- Windows常用的一些CMD运行命令_windows使用cmd运行程序
-
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本appwiz.cpl:程序和功能calc:启动计算器certmgr.msc:证书管理实...
- JAVA编程环境搭建 JDK与环境变量、Eclipse
-
1JDK1.1JDK概述JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了:JAVA开发工具(jdk\bin)基础...
- go os/exec 简明教程_go语言os包
-
Go标准库提供了便利的方法,可以很容易地运行外部命令,一般我们会使用os/exec包下的方法实现执行外部命令以及和外部命令交互。os/exec包装了os.StartProcess方法,更方便的进行输入...
- Python内置模块:shutil模块使用教程(文件与目录高级操作实践)
-
一、shutil模块简介在Python开发中,文件与目录操作是最基础的需求之一。虽然os模块提供了基础的文件系统交互能力,但对于复制、移动、删除目录、归档压缩等复杂操作,shutil模块(Shell...
- 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现
-
|注:本文曾发表在博客园我的个人博客中,转载至此公众号以归档保存。家里小朋友养了一只小乌龟,到了冬天就冬眠了,早早地准备了一个冬眠箱,铺上椰土,在室温低于15℃时,就把小乌龟放到冬眠箱里,不一会儿它...
- Python环境安装教程_python安装及环境变量配置
-
文章目录前言一、安装python运行环境1.官网https://www.python.org下载安装包.exe2.安装python二、python模块下载1.配置pip环境变量2.下载pyth...
- Python Windows 11 安装后,CMD界面进入不了Python编译界面的解决
-
1.Python安装进入官网下载python编译界面PythonReleasePython3.10.4|Python.org2.搜索栏输入cmd,进入命令提示符这时输入python命令提...
- Windows命令行command的Shell命令详细解析和语法
-
CMD命令大全及详细解释和语法CMD命令大全及详细解释和语法MicrosoftWindowsXP[版本5.1.2600]有关某个命令的详细信息,请键入HELP命令名ASSOC显示或修改文...
- JDK1.8安装&环境变量配置_java安装jdk配置环境变量
-
1、下载并安装JDK1.8链接:https://pan.baidu.com/s/1bfceFjfTQvLylu7a3T7fyg?pwd=ydtm提取码:ydtm2、设置环境变量2.1打开“控制面板”...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
飞牛OS入门安装遇到问题,如何解决?
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
- 最近发表
-
- python环境怎么搭建?小白看完就会!简简单单
- 手把手教本地部署Xinference + deepseek-R1、reranker-v2、bge-m3
- Windows 10下使用编译并使用openCV
- Windows环境CMake学习笔记(一)_windows下cmake使用
- Docker 安装教程_docker安装shinobi
- 【直播流】RTSP拉流转推RTMP_rtmp推流和rtsp拉流区别
- Windows常用的一些CMD运行命令_windows使用cmd运行程序
- JAVA编程环境搭建 JDK与环境变量、Eclipse
- go os/exec 简明教程_go语言os包
- Python内置模块:shutil模块使用教程(文件与目录高级操作实践)
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)