
C/C++
bluesen
C/C++,通讯软件开发,图像识别和图像处理,大规模数据处理
展开
-
大模型时代的语音呼叫:一些工程问题
本文探讨语音呼叫系统结合大模型的实时性解决之道,这篇文章重点讲述如何调用Edge TTS。原创 2025-03-11 17:39:37 · 210 阅读 · 0 评论 -
websocketpp在visual studio c++下的编译
websocketpp即websocket++,号称只要包含几个头文件,就可以用C++构建websocket server,我的编译器是visual studiao 2017。折腾半天,编译都通不过,经过摸索,发现需要做几个关键设置。本文说明编译项目的成功过程。原创 2024-07-26 14:16:36 · 644 阅读 · 0 评论 -
纯属好玩:我做的“截图续弈”
在线下棋有一个常见的苦恼,局势紧张的时候算不清楚,如果能摆一下变化就好了。我做的这个软件就是为了解决这个苦恼,可以将正在进行的对局截图,然后进行试下。原创 2022-02-22 15:36:12 · 250 阅读 · 0 评论 -
精确射箭识别:环数和坐标
需求背景:射箭馆射出一支箭,如果人工报靶,危险、繁琐而且人力成本高。人一直盯着靶子,会眼睛疲劳,靶面上出现十多支密集的箭时,眼花缭乱也弄不清那支是新射入的了。因此,考虑完全使用摄像头程序方式完成,摄像头对准靶面,当有箭射入时,准确判断第几环。靶面图片:射入一支箭:射入多支箭:解决之道:使用OpenCV。首先将图像二值化,搜索出一个个环的边界,并转换成极坐标:上面准确地定位环,为了便于调试和观察将之用彩色点进行了标识。射箭的识别,需要对前后两张图像相减然原创 2021-07-03 20:31:18 · 5945 阅读 · 11 评论 -
高精度定时器在windows10下失效及其解决方法
很多地方要用到高精度定时器,比如实时通信、多媒体处理、游戏开发等。我开发的软交换系统中,多媒体处理要用到高精度的定时器,在windows下常见的做法是:先设置定时器精度为1毫秒:timeBeginPeriod(1);这步很关键,否则定时器的精度很低,大概只有15.6毫秒,基本不能用。然后使用这样一组函数:CreateTimerQueue();CreateTimerQueueTimer(&t, timer,(WAITORTIMERCALLBACK)OneMilliSeco.原创 2021-04-02 18:03:08 · 5423 阅读 · 0 评论 -
从曲线图片恢复数据
很多应用是将传感器采集的数据绘制成曲线,如随时间变化的电流、电压或者功率。目前有个应用反过来,有数百张存放在pdf文档上的曲线截图,这些历史图片缺失了原始数据,需要根据分辨率很低的图片将数据恢复过来。这类应用通常是AI大数据分析的前端,恢复效果直接影响数据的质量。原始图片:以上图为例,是一幅功率图,由2条不同颜色的曲线组成,红色表示实际值和青色表示平均值。横坐标是时间轴,0-7.25秒,纵坐标表示功率,最大功率1800瓦。恢复数据的难点:1、两种颜色的曲线有叠加的地方,分离不容易;2、背景原创 2020-12-20 12:16:27 · 1710 阅读 · 3 评论 -
Linux下gettimeofday()的问题
windows下有GetTickCount()和GetTickCount64()函数,返回的是毫秒tick,通常用来计算两个时间差。我在Linux下封装了一个同名的函数:unsigned long long GetTickCount64(){ timeval ts; gettimeofday(&ts,0); return(ts.tv_sec * 1000 + ts.tv_usec / 1000);}使用起来很简单:uint64_t t1 = GetTickCount6原创 2020-08-10 10:13:15 · 1304 阅读 · 0 评论 -
画面中定位汉字串的外轮廓
我们做的项目需要匹配两张图片,比如机顶盒输出的视频,设置的菜单画面有很多汉字,并不需要认出这些汉字,通过标注汉字串的轮廓,对比两张图片的轮廓位置和大小,就可以判断画面相似度,进而判断当前处于哪个菜单。那么,如何定位这些汉字串的轮廓呢?请看原图:最容易想到的方法是先使用opencv的findContours()函数找出所有的轮廓,然后再对每个轮廓去找矩形----使用的是boundingRect()函数。但这样找出来的矩形并不能完全覆盖汉字字符串的外部,只能在比较方正的汉字中定位到少数几个矩形框原创 2020-06-01 20:17:15 · 357 阅读 · 0 评论 -
录音程序移植到Linux心得
我曾经写过一篇文章“如何实现一个voip录音系统”,后来还描述了持续改进的思路,但该程序只支持64位windows环境,现在很多主流的软交换--如常见的Asterisk、vos等--都运行在linux下,移植到Linux很有必要,很多情况下可以不用交换机镜像就进行录音。程序是使用C/C++开发的,语言层面的移植是相对容易的,毕竟C/C++是通用编程语言,而且C++11以后的多线程库等在多个平台...原创 2019-11-25 11:22:44 · 313 阅读 · 0 评论 -
大规模sip信令存储、查询和实时跟踪的实现
15年前运营商的核心网还是七号信令(SS7),那时候的信令采集、监控和检测系统还很落后,基本上就是给交换部门一个实时跟踪呼叫的工具,如果需要查询历史信令,很麻烦,需要倒库,查询速度超慢。当时一个朋友想挖掘呼叫的数据,于是我在本地网已经收敛好的信令上,做了一个信令采集、存储和快速检索系统,性能远超当时的中创信测系统,颇得运营商搞交换的弟兄好评。现在的IMS核心网已经是SIP了,如果重新设计一个类似的系统,可能吗?信令采集系统需要采集全部的信令消息,其特点是数据很大,除了呼叫相关的信令消息还有注册消息,堪称原创 2020-05-10 15:23:01 · 1359 阅读 · 0 评论 -
如何实现单机大规模并发SIP语音呼叫?
锁定目标:单机5千多大叫大,1千还是1万?好吧,暂定为5000或以上。带宽不够?千兆网。硬盘太慢?SSD。本文不考虑IO的限制,只讨论结构和模式。开源世界Voip领域最响亮的牌子应该是FreeSwitch,使用者众多,它能实现如此大规模的单机并发吗?我认为:不行。为什么不行?因为它线程太多,一个通道一个线程,上5000个线程,玩不转:“CPU忙着切换线程上下文了,哪有时间干正事”(...原创 2020-03-11 16:55:13 · 1281 阅读 · 0 评论 -
程序员如何辅导儿子做数学?
靠山吃山,当然是借助编程了。我家的孩子上小学三年级,比较喜欢数学,课外在深圳上学而思的创新预备班。去年寒假开始我教他学习C语言编程,每天1个小时左右,说是教,其实大部分时间是他自己看大部头的《C Primer Plus》,也算是半自学。每天在我给他的旧13寸MacBook Pro上用VS Code敲入书上的代码,或者自己改写,然后在Mac的终端下gcc编译,测试,倒也自得其乐。也许有人会问...原创 2020-02-20 14:48:26 · 576 阅读 · 0 评论