
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文适合对原生socket、指针不熟悉的QT开发者阅读。前半篇从系统内核与socket的关系回顾socket的知识点,后半篇从C++ QT的网络编程切入来理解socket编程及典型的性能优化方法(零拷贝、IPC-共享内存、环形队列)。上一篇篇尾提到少量数据流的进程间通信场景,管道的性能明显比socket套接字高,以下从内核的角度详细的展示。

本篇是上一篇的延伸,增加了opencv常见的物体检测及裁剪功能,源码可在资源中下载。

opencv库功能非常丰富,本篇仅分享在高拍仪场景下(黑色背景板),实现识别物体轮廓描绘的功能,关键模块会以参数差异+图片方式进行讲解,方便深入理解。

很多简要的例子都是cv::Mat image = cv::imread(imagePath);之后,直接使用image来处理图像。单一的场景体现不出冲突性,容易让人忽略image是一种公共/共享的资源变量。当存在修改image的场景时就需要注意上下文是否存在冲突了。以下用一个例子进行讲解。

上一篇分享了QT自带媒体模块实现摄像头的操作,第三方库opencv的图像处理方面,功能更丰富,本篇分享与上一篇相似的功能,不分享其他的图像处理功能。

opencv默认使用BGR格式读取图像,随着图像技术的发展,不同的专业领域使用了不同的颜色空间,为了适配及简化转换过程,opencv提供了很多颜色空间转换的方法。本文内容主要来自AI,整理了与颜色空间相关的知识点,同时篇尾提供一个QT开发的调色板工具,资源中可下载源码。

前面有两篇使用纯ffmpeg库实现了PCM和MP4录音功能,几乎展示了所有涉及的流程(ffmpeg是一个C库,比较原生)。QT也有封装好的多媒体模块,能让流程变简单很多,这也是本篇的目的。

上一篇展示了如何给图片网格化。本篇讲解的是在固定背景环境下(比如高拍仪的黑色底板),查找轮廓之后,把轮廓和网格全部显示出来,通过指定区域把固定背景中的噪点轮廓去除的方法。

无损即完整保真未做处理的数据文件,文件比较大,未经过压缩,开发的流程相对简单。(下一篇会分享AAC-mp4格式的录音功能)

QT进行摄像头相关的开发,除了可以使用自带的多媒体模块,以及opencv(前面已经分享相关博文),还可以用专注底层细节的音视频处理工具ffmpeg。在对硬件有要求的条件下,用ffmpeg才能实现极致优化(低延迟等),opencv在图片处理上非常厉害,在视频播放上不一定很全面,项目对fps有高要求时,需要结合ffmpeg库进行开发。








