vscode+opencv+mingw+cmake配置vscode下的opencv环境

news2024/9/28 11:15:01

目录

  • 介绍
  • 安装VsCode
  • 安装mingw
  • 安装cmake
  • 安装opencv,以及其扩展库 opencv_contrib
  • 安装python
  • 利用cmake生成opencv的Makefile文件
  • cmake命令进行编译,安装
  • 配置opencv环境变量
  • 配置VSCODE
  • 测试DEMO

介绍

参考链接:https://www.cnblogs.com/czlhxm/p/13848278.html

想要使vscode能够支持windows下基于C++及mingw的OpenCV开发环境,需实现以下几个关键步骤:
(1)对于opencv的库导入和语法提示,可直接通过修改.vscode配置文件中c_cpp_properties.json实现;
(2)对于gcc对含有opencv源代码的编译,需修改task.json中编译命令行中加入相关头文件目录、链接库目录以及相关的链接库文件,而这本身opencv并不自带,需要自行通过利用cmake编译opencv源文件生成,而Cmake的编译又需要python的环境
(3)对于gdb对含opencv相关代码的可执行调试,需要gdb加载支持可执行文件中opencv相关功能的dll,这依然是通过利用cmake编译opencv源文件代码生成的.

安装VsCode

官网下载安装,并安装C++扩展

安装mingw

源码下载地址,下载posix版本的
安装步骤:
(1)下载好的文件进行解压,将该路径添加到环境变量PATH;

# 解压后的路径,不要不要有空格等
D:\mingw64\bin

(2)验证是否安装成功,win+R,打开cmd:

# 输入以下命令,可以看到有版本等信息
gcc -v
g++ -v

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装cmake

用来对opencv源码进行编译

下载地址,选择cmake-3.20.0-windows-x86_64.zip
安装步骤:
(1)解压压缩包,添加环境变量PATH:

# 不要有空格等
D:\cmake-3.20.2\bin

(2)验证是否安装成功:

# cmd中输入命令,可以看到版本信息
cmake -version

在这里插入图片描述
在这里插入图片描述

安装opencv,以及其扩展库 opencv_contrib

opencv4以后很多功能都放在 opencv_contrib中,所以一定要安装这个库

下载地址,点进去,再点击tags,找到想要的版本,我这里装的是4.5.2,选择下载opencv-4.5.2-vc14_vc15.exe,同样下载opencv_contrib-4.5.2.zip
在这里插入图片描述
在这里插入图片描述
安装步骤:
(1)创建一个空文件夹,分别解压opencv-4.5.2-vc14_vc15.exe和opencv_contrib-4.5.2.zip到这个空文件夹中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装python

下载地址,选择的是python3.8
安装步骤:
(1)点击直接安装,勾选配置环境变量(勾选了不一定有效,还得自己配置)
(2)在环境变量PATH中配置python路径

# 注意修改安装路径,这里忘记修改了,安装到了默认位置
C:\Users\chenm\AppData\Local\Programs\Python\Python38
C:\Users\chenm\AppData\Local\Programs\Python\Python38\Scripts

(3)验证是否安装成功,打开python IDE,或cmd,输入python可以看到python版本信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用cmake生成opencv的Makefile文件

步骤:
(0)需要下载一些东西,可以在hosts文件中添加下面内容,不一定有用

C:\Windows\System32\drivers\etc\hosts

151.101.72.133 raw.githubusercontent.com;

(1)在D:\cmake-3.20.2\bin目录下,打开cmake-gui.exe

  • 在D:/opencv-4.5.2/opencv/build/x64/下创建一个空文件夹mingw,用于存放编译后的文件

  • source code那选择:D:/opencv-4.5.2/opencv/sources

  • build the binaries那选择:D:/opencv-4.5.2/opencv/build/x64/mingw

  • 点击Configure,跳出的对话框中选择MinGW Makefiles(一定要是MinGW Makefiles),并选择第二项Specify native compilers

  • 点击next,再弹出德对话框中选择Mingw的编译器

  • 点击finish,就会开始编译

    在这里插入图片描述
    在这里插入图片描述
    后面的就很重要了,finish结束后,应该会有很多文件没有成功下载的

  • 去D:\opencv-4.5.2\opencv\build\x64\mingw目录下,打开CMakeDownloadLog.txt文件,上面有说XXX目录缺少XXX文件,就根据上面的下载地址,自己用迅雷等下载,并按要求直接复制到指定文件夹中

#check_md5 “D:/opencv/sources/.cache/ffmpeg/638065d5a0dab8a828879942375dcac4-opencv_videoio_ffmpeg.dll”
#mismatch_md5 “D:/opencv/sources/.cache/ffmpeg/638065d5a0dab8a828879942375dcac4-opencv_videoio_ffmpeg.dll” “d41d8cd98f00b204e9800998ecf8427e”
#do_copy “opencv_videoio_ffmpeg.dll” “638065d5a0dab8a828879942375dcac4” “https://raw.githubusercontent.com/opencv/opencv_3rdparty/629590c3ba09fb0c8eaa9ab858ff13d3a84ca1aa/ffmpeg/opencv_videoio_ffmpeg.dll” “D:/opencv/build/x64/mingw/3rdparty/ffmpeg”
…复制的好像不完整
大致意思是:D:/opencv/build/x64/mingw/3rdparty/ffmpeg文件夹中缺少opencv_videoio_ffmpeg.dll,要先从"https://raw.githubusercontent.com/opencv/opencv_3rdparty/629590c3ba09fb0c8eaa9ab858ff13d3a84ca1aa/ffmpeg/opencv_videoio_ffmpeg.dll"下载这个文件,这个文件的hash编码是"638065d5a0dab8a828879942375dcac4",然后在D:/opencv/sources/.cache/ffmpeg/中要有待编码的文件,然后再从.cache中复制到目的文件夹中,其实.cache这一步可以省略,直接下载文件,不用hash码啥的,直接复制到D:/opencv/build/x64/mingw/3rdparty/ffmpeg中就行

  • 缺的文件全部弄好后,在修改下配置文件,在Search这栏搜索opencv_extra 可以看到有这一项:OPENCV_EXTRA_MODULES_PATH,然后Value栏选怎opencv的扩展文件D:\opencv-4.5.2\opencv_contrib-4.5.2\modules
    在这里插入图片描述

  • 取消勾选BUILD_opencv_face,因为这个库编译总不成功,而且也是一个不用的库
    在这里插入图片描述

  • 取消全部test相关的,没必要,可能影响编译
    在这里插入图片描述

  • 取消BUILD_opencv_world,这个好像是说将编译好的库,再压缩成什么,没必要,而且勾选的话也是一直编译不成功的
    在这里插入图片描述

  • 看看有没有ENABLE_CXX11,没有的话,点击右上方的添加,注意value勾选

    在这里插入图片描述

  • 以上配置的差不多了,点击Configure,再看看CMakeDownloadLog.txt,能看到以下信息,并且框中没有红字后(有时候需要重复几次Configure),再点击旁边的Generate,最后有Configure done generate done就成功了
    在这里插入图片描述
    在这里插入图片描述

cmake命令进行编译,安装

在cmd窗口输入以下命令,输入第一个命令可能不成功

minGW32-make 或者 minGW32-make -j 4 (-j 4 表示4进程,根据自己机器情况设置,还可以8,16)

minGW32-make install

minGW32-make后可能出现下面BUG,参考https://www.codeleading.com/article/51025552597/
在这里插入图片描述
解决步骤:
(1)定位到你的opencv_contrib\modules\wechat_qrcode\src\zxing这一目录下,打开zxing.hpp文件
(2)将第30行的#if defined(ANDROID_API)改为#if defined(ANDROID_API) || defined(_MSC_VER) || defined(MINGW32) || defined(MINGW64)
(3)删掉第54到第62行的内容
(4)保存文件,重新Configure,Generate,再编译

配置opencv环境变量

在这里插入图片描述

配置VSCODE

新建一个.vscode文件夹,新建c_cpp_properties.json,lunch.json,task.json
c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "D:/opencv-4.5.2/opencv/build/x64/mingw/install/include",
                "D:/opencv-4.5.2/opencv/build/x64/mingw/install/include/opencv2"

            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.17763.0",
            "compilerPath": "D:/mingw64/bin/g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "${default}"
        }
    ],
    "version": 4
}

launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        
        {
            "name": "(gdb) Launch",
            "preLaunchTask": "g++",//调试前执行的任务,就是之前配置的tasks.json中的label字段,"Compile" "g++.exe build active file"
            "type": "cppdbg",//配置类型,只能为cppdbg
            "request": "launch",//请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}\\Debugger\\${fileBasenameNoExtension}.exe",//调试程序的路径名称,这个Debugger需要自己创建,为了方便放置生成的exe文件
            "args": [],//调试传递参数
            "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
            "cwd": "${workspaceFolder}",  // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
            "environment": [],
            "externalConsole": true,//true显示外置的控制台窗口,false显示内置终端
            "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧
            "MIMode": "gdb",
            "miDebuggerPath": "D:/mingw64/bin/gdb.exe",// 调试器路径,Windows下后缀不能省略,Linux下则不要
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ]
        }
    ]
}

tasj.json

{
	"version": "2.0.0",
	"tasks": [
		{
			// "type": "cppbuild",
			"label": "g++", // 任务名称,与launch.json的preLaunchTask相对应,或者选择Compile或者"C/C++: g++.exe 生成活动文件"
			"command": "D:/mingw64/bin/g++.exe", // 要使用的编译器,C++用g++
			"args": [
				"-fdiagnostics-color=always",
				"-g", // 生成和调试有关的信息
				"${file}", //当前文件名
				"-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
				"${fileDirname}\\Debugger\\${fileBasenameNoExtension}.exe",
				"-m64", // 不知为何有时会生成16位应用而无法运行,加上此条可强制生成64位的
				"-Wall", // 开启额外警告
            	"-static-libgcc",     // 静态链接libgcc,一般都会加上
				"-finput-charset=UTF-8",
            	"-fexec-charset=GBK", // 生成的程序使用GBK编码,不加这条会导致Win下输出中文乱码;繁体系统改成BIG5
            	"-std=c++17", // 要用的语言标准,根据自己的需要修改。c++可用c++14
				// 扩展参数
				// -I 头文件目录
				// -L 库文件目录
				// -l 库文件
				"-I", "D:/opencv-4.5.2/opencv/build/x64/mingw/install/include",
				"-I", "D:/opencv-4.5.2/opencv/build/x64/mingw/install/include/opencv2",
				"-L", "D:/opencv-4.5.2/opencv/build/x64/mingw/install/x64/mingw/bin",

				// "-l", "libopencv_calib3d452",
				// "-l", "libopencv_core452",
				// "-l", "libopencv_dnn452",
				// "-l", "libopencv_features2d452",
				// "-l", "libopencv_flann452",
				// "-l", "libopencv_gapi452",
				// "-l", "libopencv_highgui452",
				// "-l", "libopencv_imgcodecs452",
				// "-l", "libopencv_imgproc452",
				// "-l", "libopencv_ml452",
				// "-l", "libopencv_objdetect452",
				// "-l", "libopencv_photo452",
				// "-l", "libopencv_stitching452",
				// "-l", "libopencv_video452",
				// "-l", "libopencv_videoio452",
				// "-l", "libopencv_ximgproc452" ,

				"-l", "libopencv_aruco452",
				"-l", "libopencv_bgsegm452",
				"-l", "libopencv_bioinspired452",
				"-l", "libopencv_calib3d452",
				"-l", "libopencv_ccalib452",
				"-l", "libopencv_core452",
				"-l", "libopencv_datasets452",
				"-l", "libopencv_dnn452",
				"-l", "libopencv_dnn_objdetect452",
				"-l", "libopencv_dnn_superres452",
				"-l", "libopencv_dpm452",
				"-l", "libopencv_features2d452",
				"-l", "libopencv_flann452",
				"-l", "libopencv_fuzzy452",
				"-l", "libopencv_gapi452",
				"-l", "libopencv_hfs452",
				"-l", "libopencv_highgui452",
				"-l", "libopencv_imgcodecs452",
				"-l", "libopencv_imgproc452",
				"-l", "libopencv_img_hash452",
				"-l", "libopencv_intensity_transform452",
				"-l", "libopencv_line_descriptor452",
				"-l", "libopencv_mcc452",
				"-l", "libopencv_ml452",
				"-l", "libopencv_objdetect452",
				"-l", "libopencv_optflow452",
				"-l", "libopencv_phase_unwrapping452",
				"-l", "libopencv_photo452",
				"-l", "libopencv_plot452",
				"-l", "libopencv_quality452",
				"-l", "libopencv_rapid452",
				"-l", "libopencv_reg452",
				"-l", "libopencv_rgbd452",
				"-l", "libopencv_saliency452",
				"-l", "libopencv_shape452",
				"-l", "libopencv_stereo452",
				"-l", "libopencv_stitching452",
				"-l", "libopencv_structured_light452",
				"-l", "libopencv_superres452",
				"-l", "libopencv_surface_matching452",
				"-l", "libopencv_text452",
				"-l", "libopencv_tracking452",
				"-l", "libopencv_video452",
				"-l", "libopencv_videoio452",
				"-l", "libopencv_videostab452",
				"-l", "libopencv_wechat_qrcode452",
				"-l", "libopencv_xfeatures2d452",
				"-l", "libopencv_ximgproc452",
				"-l", "libopencv_xobjdetect452",
				"-l", "libopencv_xphoto452",
				"-l", "opencv_videoio_ffmpeg452_64"
				// 这行是博主自己添加的扩展动态链接库,没安装扩展的这行可以删除。
			],// 编译的命令,其实相当于VSC帮你在终端中输了这些东西
			"options": {
				"cwd": "D:/mingw64/bin"
			},
			"problemMatcher": [ // 捕捉编译时终端里的报错信息到问题面板中,修改代码后需要重新编译才会再次触发
				"$gcc"
			],
			// "group": "build",
			// "detail": "编译器: D:/mingw64/bin/g++.exe",

			"type": "shell", // process是把预定义变量和转义解析后直接全部传给command;shell相当于先打开shell再输入命令,所以args还会经过shell再解析一遍
			"group": {
				"kind": "build",
				"isDefault": true // 不为true时ctrl shift B就要手动选择了
			},
			"presentation": {
				"echo": true,
				"reveal": "always", // 执行任务时是否跳转到终端面板,可以为always,silent,never。具体参见VSC的文档
				"focus": false,     // 设为true后可以使执行task时焦点聚集在终端,但对编译C/C++来说,设为true没有意义
				"panel": "shared"   // 不同的文件的编译信息共享一个终端面板
			}
		}
	]
}

在这里插入图片描述

测试DEMO

点击F5运行程序,可以看到有图片显示就成功了

#include <opencv2/opencv.hpp>

// using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称 
using namespace cv;

int main(void)
{
    // C++中Mat表示图像的内存对象,所有的图像对象皆为Mat
    // 通道顺序:B,G,R
    Mat srcImage = imread("F:\\VOCtrainval_11-May-2012\\VOCdevkit\\VOC2012\\JPEGImages\\2007_000027.jpg"); // 载入指定路径的图像

    // WINDOW_AUTOSIZE自适应调整窗口大小,WINDOW_FREERATIO自由屏幕窗口,可以手动调整窗口大小
    namedWindow("input", WINDOW_FREERATIO); 

    std::cout << "Mat格式:" <<srcImage.depth()<< std::endl;

    // imshow只支持0~255像素格式图像的显示或浮点数数据的显示
    imshow("input", srcImage); // 显示该图像

    waitKey(0); // 表示阻塞等待用户键盘输入,用户按键盘任意键就会停止阻塞,继续执行直到程序正常退
    destroyAllWindows();
    
    return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教育行业回访话术

近些年来&#xff0c;随着知识经济的快速发展&#xff0c;教育市场呈现良好的增长态势。越来越多的人开始通过参加各种培训来提升自己&#xff0c;教育行业竞争十分激烈。 前言 近些年来&#xff0c;随着知识经济的快速发展&#xff0c;教育市场呈现良好的增长态势。而且由于受…

人力资源软件对中小企业的七点重要性

对于中小企业&#xff08;SMB&#xff09;来说&#xff0c;员工就意味着一切。你的员工几乎掌握着企业的整体增长和发展&#xff0c;他们可以成就企业&#xff0c;但也能破坏企业的发展。为了提高员工效率&#xff0c;中小型企业需要出色的人力资源管理。员工只有在受到重视和培…

被新手忽视的 自谐振频率点

在MHz的DCDC和RF LNA电路中&#xff0c;被新手忽视的 自谐振频率点Self-Resonant Frequency 计算公式为 下图显示了 1μF&#xff0c;封装为 1206 的陶瓷电容器的阻抗&#xff08;MLCC有经典的V型阻抗-频率曲线。随着频率升高&#xff0c;寄生电感的影响开始凸显&#xff0c;阻…

Faster RCNN网络源码解读(Ⅴ) --- GeneralizedRCNNTransform图像初始化代码解析

目录 一、代码作用&#xff08;transform.py&#xff09; ​编辑 二、代码解析 2.1 GeneralizedRCNNTransform类 2.1.1 初始化函数__init__ 2.1.2 normalize标准化处理 2.1.3 将图像以及bndbox进行缩放resize 2.1.4 batch_images 2.1.5 正向传播 forward 2.1.6 后…

分布式系统共识机制:一致性算法设计思想

分布式系统共识机制&#xff1a;一致性算法设计思想Paxos 算法节点角色算法流程Raft 算法节点角色核心机制leader选举日志复制PBFTHotstuff门限签名核心机制二阶段提交协议三阶段提交协议这次以一个宏观的角度去总结 自己学习过的一致性算法。一致性算法的目标就是让分布式系统…

Java开发 - 树(二叉树,二叉排序树,红黑树)

目录 前言 你好&#xff0c;认识一下&#xff0c;我是树 二叉树与二叉排序树 二叉排序树特点 为什么说二叉排序树查询效率要高于链表呢&#xff1f; 元素的类型 比较器 手写二叉排序树 定义一棵二叉树 增加元素 查询元素 修改元素 删除元素 遍历二叉树 重写toS…

JAVA注解处理API实战

简介 ​ 插件化注解处理(Pluggable Annotation Processing)API JSR 269提供一套标准API来处理Annotations( JSR 175),实际上JSR 269不仅仅用来处理Annotation&#xff0c;它建立了Java 语言本身的一个模型,它把method、package、constructor、type、variable、enum、annotatio…

工业远程I/O模块 CANopen 通讯

1.对象字典OD 对象字典是每个CANopen设备必须具有的功能&#xff0c;它包含了设备所有可以被访问的参数&#xff0c;客户端使用索引(Index)和子索引(Sub-index)来读写对象字典里的参数。 对象字典主要用来设定设备组态及进行非即时的通讯。每个对象采用16位索引的方式来寻址&…

01Editor最新破解

文章目录01Editor最新版注册算法逆向1.定位注册算法代码2.整体注册算法3.Check1算法分析4.Check2算法分析5.获得正确的任意用户名对应的序列号01Editor最新版注册算法逆向 1.定位注册算法代码 【版本】13.0.164bit\textcolor{green}{【版本】13.0.1\ 64bit}【版本】13.0.1 64b…

Redis集群系列七 —— 散列插槽分析

集群状态日志分析 Redis 分片集群引入了一个逻辑上的插槽或哈希槽概念&#xff0c;将集群划分为16384&#xff08;0~16383&#xff09;个槽位&#xff0c;集群中的每个节点占据一部分槽位数&#xff0c;在逻辑上将集群中的所有节点构成了一块完整的内存空间。 这个日志中可以通…

对象定义-解构-枚举属性遍历以及对象内函数

属性名表达式 定义对象的属性有两种方式 1、直接使用标识符作为属性名 obj.name 2、以表达式作为属性名 obj[ab] 10 let obj {} obj.name 孙悟空 // 孙悟空 obj[a b] 10 // 10 console.log(obj); // {name: 孙悟空, ab: 10}es5中字面量定义对象只能使用一种方法 var …

4.3.3、划分子网的 IPv4 地址

若有一个大型的局域网需要连接到因特网 若需要申请一个 C 类网络地址&#xff0c;其可分配的 IP 地址数量只有 254254254 个&#xff0c;不够使用 因此申请了一个 B 类网络地址&#xff0c;其可分配的 IP 地址数量达到了 655346553465534 个 给每台计算机和路由器的接口分配一…

实验九、消除互补输出级交越失真方法的研究

一、题目 互补输出级交越失真消除方法的研究。 二、仿真电路 基本互补电路和消除交越失真互补输出级如图1所示。晶体管采用 NPN 型晶体管 2N3904 和 PNP 型晶体管 2N3906。二极管采用 1N4009。 在实际的实验中&#xff0c;几乎不可能得到具有理想对称性的 NPN 型和 PNP 型管…

网络编程套接字----UDP协议

文章目录前言一、理解源IP地址和目的IP地址二、认识端口号理解"端口号"和"进程ID"理解源端口号和目的端口号三、认识TCP协议四、认识UDP协议五、网络字节序六、socket编程接口socket常见APIsockaddr结构sockaddr结构sockaddr_in 结构in_addr结构七、地址转…

第三方软件测试▏有效保障软件产品质量的关键性步骤

软件测试作为软件产品生命周期中不可或缺的重要步骤&#xff0c;被许多软件企业所重视。主要是通过对软件产品进行全面的测试&#xff0c;确保软件质量以及满足用户需求。但软件测试不仅仅是个简单的检测工作&#xff0c;而是一个系统性的、有组织性的测试过程&#xff0c;包含…

Linux:安装 telnet 命令

我是 ABin-阿斌&#xff1a;写一生代码&#xff0c;创一世佳话&#xff0c;筑一览芳华。如果小伙伴们觉得不错就一键三连吧~ 声明&#xff1a;原文地址&#xff1a;https://www.pudn.com/news/6332b44a272bb74d44053074.html 其他参考文章&#xff1a;https://www.cnblogs.com…

尚医通-上传医院接口-需求准备(十七)

目录&#xff1a; &#xff08;1&#xff09;数据接口-上传医院接口-需求准备 &#xff08;1&#xff09;数据接口-上传医院接口-需求准备 在医院接口设置的时候说过&#xff0c;我们做的是预约挂号平台&#xff0c;里面有数据的显示&#xff0c;挂号等等相关业务&#xff0c;…

计算机组成原理【by王道考研计算机】

文章目录第一章1. 什么是计算机系统2. 硬件的发展3. 计算机硬件的基本组成冯诺依曼结构现代计算机结构主存储器运算器控制器工作过程实例4. 计算机系统的层次结构五层结构三种级别的语言5. 计算机的性能指标存储器的容量CPU其他常用时间单位第二章1. 进制转换2. 字符与字符串3.…

下一代,容器工具Podman

一、简介 Kubernetes 团队发布了最新的 1.20 版本时&#xff0c;有一枚重磅炸弹&#xff1a;正式宣布弃用 Docker 支持的功能。弃用 Docker 之后&#xff0c;开发者们对其替代品的讨论逐渐热烈&#xff0c;其中 Containerd 和 Podman 倍受期待。 Podman 是一个开源的容器运行…

云原生、20.3k Star......时序数据库 TDengine 的 2022 年精彩纷呈

日月其迈&#xff0c;时盛岁新 2022 的进度条已经加载至“100%” 疫情肆虐下&#xff0c;毫无疑问 这仍然是头顶风雪攀登山峰的一年 好在如今曙光已现 回望这一年&#xff0c;TDengine 也硕果满满 2022 年是 TDengine 创立的第六个年头 我们付出着&#xff0c;也在收获着…