C/C++开源库推荐-程序员宅基地

技术标签: C++探究,OpenCV,图片合成  c++  C++基础实战  开发语言  

C/C++开源库推荐

  主要都是平常用到的,包含windows开发、android开发、后台开发、音视频开发、深度学习等等

  最后还附带几个其他语言开发的比较好的项目
  
  持续更新中...

GUI开发

  • qt 跨平台开发库,内部封装了各种跨平台工具,但是大多数情况下都被用作开发跨平台客户端
  • imgui 基于opengl/dx编写的GUI库,挺简单也挺好用的
  • electron C++/NodeJS开发的跨平台GUI库,感觉其实就是简化版的chrome并做了某些功能的增强,分为main/render两部分,ui布局全是html/js/ts/vue/jsx,轻轻松松就可以开发出一个很漂亮的界面,毕竟前端模板太多了,可以配套用nodejs调用C++那一套,回调回C++混合开发,对执行效率要求不高的可以用
  • sdl 跨平台GUI开发库,scrcpy用的就是这个
  • SFML 跨平台的GUI库,以前开发游戏时写了一个demo,用了一次
  • duilib 美化MFC项目
  • skia google开源的gui库,android/chrome的UI都是用这个画的
  • wxwidgets audacity好像用的就是这个gui库
  • boden android/ios gui库,纯C++开发
  • elements 跨平台ui库

远程控制

  • freerdp rdp远程控制,在windows上还是mstsc最好用,linux/mac可以考虑freerdp
  • aspia p2p远程工具,研究过其中代码挺不错的
  • scrcpy PC控制android手机,需要打开adb
  • synergy 效率工具,用一台机器共享鼠标键盘控制多台其他计算机,gui配置要激活,我一般直接用控制台启动,具体配置及启动方式请移步synergy控制台启动
  • QtScrcpy 将synergy的gui用QT重写了并做了增强
  • tigervnc 开源的vnc客户端与服务端
  • webrtc-streamer严格来说这不是远程工具,不能控制,是一个C/C++写的基于webrtc的投屏工具,类似于deskreen,服务器启动后,在其他机器上打开浏览器输入网址,就可以选择需要显示的窗口了

音视频开发

  • ffmpeg 从事音视频开发必备库,avformat混流分流何种协议封装,avcodec音视频编辑器封装,ffplay.exe 是一个万能播放器,ffmpeg.exe 是个超级音视频处理工具,格式工厂就是把这个工具封装了一个界面,ffprobe码流分析工具
  • openh264 思科开源的h264编解码库,号称最快,没有具体测试过
  • x264 h264编解码库
  • libvpx vp8/vp9编解码库
  • vlc videolan的视频播放器,可提供api接口调用很方便
  • QtAV 将ffmpeg封装成一个Qt播放器组件,在qt中用很方便
  • rlottie lottie动画播放库,以前写QT项目时用到了,不过qt现在自己也有lottie播放组件了

音视频会议

  • webrtc google开源的为浏览器提供实时通话的C++库,在浏览器上提供了一套接口,很方便的实现p2p视频通话,最近几年因为疫情这个库被大量用于音视频会议系统
  • janus 纯C开发的音视频会议服务器,很多公司的服务器都是以这个为基础版本改出来的
  • licode C++/js开发的音视频会议服务器,同样被很多公司拿出来用
  • mediasoup 基于webrtc的 sfu服务器,以库的形式开放出来,可以嵌入自己的项目中
  • media-server 基于webrtc的服务器
  • freeswitch voip视频会议服务器
  • kamailio sip注册服务器,编译安装配置好以后,下载个linphone就可以局域网视频通话,配置个rtpengine也可以转发rtp视频流
  • osip sip信令封装库
  • exosip osip的C++封装
  • pjsip sip信令封装库
  • jrtplib rtp封装库,对接国标GB28181用过
  • ortp linphone用到的rtp封装库

压缩库

  • p7zip 俄罗斯同志开发的压缩解压算法库,并提供安装程序,很出名养了一大批同类软件
  • libzip 传统的zip压缩解压缩库

计算机视觉/深度学习

  • opencv intel开源的图像处理库,里边包含了何种图像处理的算法,简单的人脸识别,抠图,图像拼接,边缘检测等等,还有dnn模块可以加载其他深度学习框架训练的模型进行推理,内部封装了ffmpeg,libjpg,libpng,支持图像io,视频io,很强大的C++计算机视觉库
  • dlib 通用工具库,包含人脸识别/检测 json解析,网络,GUI等功能,里边包含很多功能
  • PaddlePaddle 百度开源的深度学习框架,没有用这个训练过东西
  • pytorch facebook开源的深度学习框架,目前学术界最流行的
  • tensorflow google开源的深度学习框架
  • darknet 目标检测方面的神,可惜原作者已放弃这方面的研究,现在已经有pytorch实现的yolov5,yolov7了,可以用更少的数据训练出不错的模型
  • mxnet 亚马逊在用的深度学习框架
  • onnxruntime 微软开源的深度学习推理框架,配合onnx使用
  • caffe 贾扬清开发的深度学习框架,以前很多人都用这个,后来tensorflow出来后,大家纷纷开始转python用tensorflow
  • mediapipe google开源的推理框架,谁用谁知道,确实是快
  • ncnn 腾讯开源的推理框架,移动端很快
  • mnn 阿里开源的推理框架
  • mace 小米开源的模型推理框架
  • Paddle-Lite 百度开源的推理框架
  • lite.ai.toolkit 把一些推理框架做了封装的工具库
  • libfacedetection yushiqi开源的人脸检测工具
  • SeetaFace 好像是中科院某位教授开源的项目,检测识别效果不错,拿来即用的项目,当时用了里边的人脸检测确实是最快的

语音识别/深度学习

  • kaldi 语音识别方面必知必会的库,以前研究过一段时间,程序不怎么用修改,需要修改shell脚本,而且训练的比较慢,我所属的公司都是快节奏的公司,后来就直接改用其他公司产品了,就再没有研究过
  • wenet 国内某公司开源的语音识别系统,使用pytorch推理,效果比自己训练的kaidi好
  • PaddleSpeech 百度开源的语音识别项目,效果比wenet好
  • DeepSpeech 语音识别项目
  • audacity 语料分析调整工具
  • portaudio audioio工具

服务器

  • nginx 俄罗斯同志开发的http服务器,代理服务器,还支持各种协议,用过的都说好,不过现在属于美国公司了
  • srs 以前用他当做rtmp服务器
  • ZLMediaKit 媒体服务器
  • redis 缓存服务器,用来存储临时变量很方便,与db协同使用
  • httpd apache开源的web服务器
  • lighttpd 轻量级的web服务器
  • memcached 缓存服务器,类似于redis
  • kbengine C++开发的游戏服务器
  • civetweb 小web服务器,我们在嵌入式设备上用的web服务器
  • mongoose 小web服务器,可以在嵌入式设备上用
  • Tinyhttpd很小的web服务器,小到功能都不全,就几百行代码,只能打开纯文本网页,有图片的话打开很乱,当时改了半天才给改完整
  • darkhttp 只有一个源文件的web服务器,2000多行代码,功能很全,可以打开有图片的网页
  • oatpp C++实现的web服务器

游戏

  • cocos2d-x cocos2d-x是一个C++开发的跨平台游戏开发库,现在游戏开发用cocos的应该比较少,大部分都是unity/ue4
  • UnrealEngine 渲染效果最好的游戏引擎

直播

  • obs-studio 很厉害的推流工具,使用qt开发的界面,UI设计的很漂亮,使用也特别简单,可以录屏,虚拟相机,推流,ndi等功能,插件化开发代码也很不错

IM工具

  • tdesktop telegramdesktop官方的桌面客户端,编译起来比较费劲,代码和功能都优秀
  • teamgram-tdesktop 开源teamgram-server开的tdesktop分支
  • flamingo 开源im,包含server desktop android三个子项目

序列化

  • protobuf 很常用的序列化工具,具有比json占用空间小,编解速度快的特点
  • json modern c++开发的json解析库
  • jsoncpp c++开发的json解析库
  • tinyxml2 C++开发的xml解析库
  • rapidjson 腾讯开源的json解析库
  • pugixml 支持xpath的xml解析库
  • cereal高性能序列化库

网络库

  • libevent event驱动的跨平台网络库
  • libuv 专门为nodejs开发的event库,是个独立的项目可以单独拿来用
  • wangle facebook开源的网络库,根据java netty架构设计的,习惯netty的可以试试
  • muduo reactor模式网络库
  • grpc google开源的rpc项目
  • brpc 百度开源的rpc项目,捐给了apache基金会,据说很强
  • asio modern C++实现的网络库
  • thrift apache基金会旗下的rpc项目
  • rpclib 以前想找个小的rpc项目研究,就研究的这个
  • crow modern c++ web服务器,类似于flask
  • curl http客户端项目
  • librdkafka 读写kafka服务器的client,以前搞大数据是用过
  • zmq 与其他mq项目不同,zmq是以库的形式提供
  • live555 在接入rtsp相机用过的项目
    • websocketpp C++实现的一个websocket库依赖于asio库
  • libwebsocketsC语言实现的websocket库

数据库

  • postgresql 很流行的sql服务器
  • mysql 项目中用的最多的sql服务器
  • mongodb 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • sqlite 一款轻型的数据库,一般嵌入到项目内部
  • leveldb google开源的非常高效的kv数据库
  • mmkv 腾讯开源的高效kv数据库

加密解密

  • openssl 加密解密库
  • boringssl google从openssl中分离出来的加密解密库
  • mbedtls 嵌入式项目中经常用的加密解密库

虚拟机

  • qemu ffmpeg作者开源的模拟器,据说可以达到真机效果
  • virtualbox oracle开源的x86模拟器
  • botchs x86模拟器
  • anbox 感觉像是一个把android虚拟机跑在linux上的东西,类似于docker,把每个安卓程序轻量级的跑在x86 linux主机上,android上的每个程序直接绘制在linux gui上

编译器

  • gcc gcc编译器
  • llvm llvm编译套件

工具库

构建工具

  • cmake 跨平台构建工具,用的最广泛的工具,android/linux/windows几乎哪都再用
  • ninja google工程师开源的构建工具类似于make
  • vcpkg 相当于ubuntu上的apt-get install吧,只不过,vcpkg是下载编译安装到仓库,并且需要配合cmake使用

跨平台项目

  • chromium chrome浏览器开源项目,很多项目都是这个项目的子项目
  • v8 chromium项目的子项目
  • nodejs 基于v8开发的让js独立于浏览器运行的开发平台

无分类工具

golang项目

  • frp 代理工具将局域网主机暴露到公网上,远程办公必备
  • caddy nginx的golang版本
  • syncthing 文件同步工具
  • docker 轻量级虚拟机,相当于从软件层面的虚拟化,很方便
  • k8s google开源的用于管理云平台中多个主机上的容器化的应用
  • minikube k8s的单机版本
  • Open-IM-Server 微信前团队开源的im服务器
  • teamgram-server golang开发的开源telegram sever

rust项目

  • rustdesk rust开发的远程客户端,服务端同样开源
  • yew rust前端开发框架类似于react
  • tauri 类似于electron,不过速度性能都比electron强

ts/js项目

  • simple-peer 对webrtc接口做了封装,使调用更简单了
  • deskreen 基于webrtc的投屏器,通过浏览器将桌面投到其他设备上

c#项目

  • Wox windows启动器

java/kotlin项目

  • dbeaver java开发的数据库连接客户端
  • libgdx 基于java的跨平台游戏开发框架

python项目

dart项目

  • dio dart http网络库
  • Best-Flutter-UI-Templates flutter开发的跨平台界面,在andriod/windows跑过,ui设计的不错,就是给人一种卡顿的感觉

php项目

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/CHNIM/article/details/131965770

智能推荐

(最终)如何利用印象笔记搭建自己的知识体系_印象笔记建立个人知识体系-程序员宅基地

文章浏览阅读1k次。1、 为什么要记录笔记这个问题我印象中探讨过很多次,但是简单来讲就是方便日后在遇到相似问题时查询解决方式,并在记录笔记的过程汇总中对知识进行一轮新的复习。这样一生,如果作为一个技术人员来讲的话,我不可能只学习一门技能,需要学习的东西很多。当只会一门技能时,做不做笔记其实无所谓,但是当你学会多种技能时,你需要笔记这样一个第二大脑来帮助存储那些琐碎并不通用的知识,你自己的大脑来记忆通用性的知识,可以迁移的方法。在遇到问题时,知道做什么永远比怎么做更重要。1.1 知识的分类1.1.1 元认知解释:能指导_印象笔记建立个人知识体系

FATFS文件系统详解-程序员宅基地

文章浏览阅读2.7k次,点赞13次,收藏96次。随着硬盘/flash容量不断增大,存储的数据也越来越多,早期单一的对应地址存放对应数据的方案已经无法满足我们的需求,因此一群大佬们便开始设计文件系统这样一个东西,用来管理硬盘/flash上的数据信息。本文主要分享关于FAT文件系统的详细设计。通过对FAT文件系统组成介绍,字段分析并采用新增文件实践分析的方式,详细阐述FAT文件系统的工作原理!_fatfs

【企业架构师】12 项企业架构师认证-程序员宅基地

文章浏览阅读3k次,点赞2次,收藏7次。企业架构师是使 IT 战略与业务目标保持一致的重要且不断增长的角色。无论您对云、应用程序、软件还是系统感兴趣,企业架构认证都可以提升您的职业生涯。如果您计划从事企业架构师 (EA) 的职业,那么认证是验证您的 EA 技能的好方法。作为 EA,您将负责为企业制定 IT 战略,以使业务目标与 IT 目标保持一致。公司严重依赖技术,因此 IT 现在是任何强大业务战略的基础部分。..._企业架构师认证

如何构建一个自己的代理ip池_如果制作代理ip池-程序员宅基地

文章浏览阅读5.9k次,点赞2次,收藏29次。相比前两种搭建IP池的方法来说,付费代理IP更能满足用户的需求,但对于有些特殊要求的朋友来说,他们想一次提取很多个或者多次提取很多个,存放在本地建立的IP池里,这种方法在一定的程度上优化了方案。只不过长期下来的话,服务器的维护成本较高,并且需要定时的维护,消耗大量的时间,如果是个人的话,搭建起来后期维护的成本太高了,如果您不是高端玩家的话,不建议使用这种方式搭建IP池。相对于免费的代理IP来说,收费代理IP虽然需要付出一定的成本,但是IP资源都是真实IP,并且高匿性,稳定性也好。一、默认自动切换IP。..._如果制作代理ip池

Linux下解压与压缩命令_linux解压rpm-程序员宅基地

文章浏览阅读4.3k次,点赞4次,收藏34次。本文主要是总结题主在学习与工作中使用到的Linux环境下解压与压缩命令,内容不算很全,但是囊括了大部分需求场景,如有误笔之处,还请同学指正。_linux解压rpm

前端展示后台服务器中图片的功能实现_前端访问后端图片展示-程序员宅基地

文章浏览阅读451次,点赞11次,收藏8次。这里的按钮我是放在了table表格的末尾,目的是获取每一行中的批次号,然后根据批次号读取后台服务器的图片,并且展示在前端的dialog中。有图片的效果图,这里只是做了个测试,图片的大小暂时还未调整。主要是一个接口还有个工具类,代码如下。dialog部分的代码。_前端访问后端图片展示

随便推点

面试ASP.NET程序员的笔试题和机试题-程序员宅基地

文章浏览阅读128次。面试 一般会叫你填两个表 1个是你的详细信息表 1个是面试题答卷 两个都要注意反正面是否都有内容不要遗漏,如果考你机试一般也有两种,就是程序连接数据库或一些基本的算法(二分查找,递归等),公司一般都是测试你的基本功是否扎实,如果你基本功好就游刃有余不必紧张! asp.net面试题 1.new有几种用法 第一种:new Class(); 第二种:覆盖方法 public new XXXX()..._.net面试机试题

【二、大数据环境篇】001、方法论_方法论semma-程序员宅基地

文章浏览阅读405次。1、官网的文档无论是学习Hadoop的hdfs、hive,还是hbase等,都要非常看重官网的文档。大数据的很多框架,都是Apache的顶级项目,各个组件框架的官网链接都可以从下面的链接进入:Hadoop:http://hadoop.apache.org/Avro: 序列化系统HBase: 分布式数据库Hive: 数据仓库Mahout: 机器学习与数据挖掘库Pig: 并行计算的高级数据..._方法论semma

LDA算法的数学推导过程详解-程序员宅基地

文章浏览阅读411次,点赞8次,收藏21次。主题模型是自然语言处理和文本挖掘领域的一个重要研究方向,它可以自动发现文档集合中潜在的主题结构。其中,潜在狄利克雷分配(Latent Dirichlet Allocation, LDA)是最常用和最成功的主题模型之一。LDA是一种无监督的贝叶斯概率模型,能够有效地发现文档集合中隐藏的主题结构。LDA模型的核心思想是:每个文档可以表示为多个主题的概率分布,每个主题又可以表示为词语的概率分布。通过学习这些潜在的主题分布和词语分布,LDA模型可以发现文档集合中蕴含的语义主题信息。

Python利用fitz库提取pdf中的图片(针对多种类型pdf)_import fitz-程序员宅基地

文章浏览阅读2.3w次,点赞17次,收藏98次。目录一. 安装fitz二. pdf文件格式问题2.1 pdf文件存在多种格式2.2 分析问题三. 代码一. 安装fitz安装:需要安装fitz和PyMuPDF,否则会报如下错误:ModuleNotFoundError: No module named ‘frontend’pip install fitz PyMuPDF二. pdf文件格式问题2.1 pdf文件存在多种格式pdf文件的格式有好几种,用Adobe Acrobat比较正常的如下所示:这种类型的pdf文件可以比较正常地提取里面的图片_import fitz

for循环倒序java_for循环-程序员宅基地

文章浏览阅读5.4k次。除了while和do while循环,Java使用最广泛的是for循环。for循环的功能非常强大,它使用计数器实现循环。for循环会先初始化计数器,然后,在每次循环前检测循环条件,在每次循环后更新计数器。计数器变量通常命名为i。我们把1到100求和用for循环改写一下:// for----public class Main {public static void main(String[] arg..._java for 倒序

VS中未定义标识符cout,endl_未定义标识符 "endl-程序员宅基地

文章浏览阅读1w次,点赞6次,收藏10次。VS中未定义标识符vs2017中显示未定义标识符cout,endl。一种方法是:先看有没有包含输入输出流#include,以及命名空间using namespace std;第二种:如果上面都已包含,还是显示未定义标识符的话,检查一下,#include"pch.h"是否是在#include上面我就是犯了第二个错误..._未定义标识符 "endl

推荐文章

热门文章

相关标签