自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何通过首尾来判断是否为可读的字符格式文件?

大部分情况下,读取文件的头几个字节来检查是否为文本文件,ASCII码的文本文件以0x00开头,UTF-16的文本文件以0xFF,0xFE开头,UTF-8的文本文件以0xEF,0xBB,0xBF开头。检查是否以null字符结尾,这是文本文件的一个常见特征。如何通过首尾来判断是否为可读的字符格式文件?当然也有例外,但这是操作系统默认的常识。

2024-01-19 09:43:06 344 1

原创 讲述一个奇葩的技术故事

而在windows操作系统下,出错处理就不是那么武断了,系统的驱动程序会报校验错误,但是数据接收正常,如何处理由程序员自己决定,是不管不顾,还是出错重发,又或是弃之如履,总之,在目前的技术条件下,串行通讯变得非常高速可靠,和那个使用调制解调器的年代截然不同了,那才真是一场噩梦般的通讯,好在一去不复返了,所以再说就是罗嗦了。有一家公司,做了一个古老的设备,通过串行通讯发送数据,还特意设置了校验位,奇葩的是这个校验位在通讯过程中会改变设置,有时是常0,有时是常1。技术人员都懂,实在不好意思说。

2024-01-16 09:04:15 356 1

原创 编写一个证书制作程序如何?

证书制作,是一个需要程序来辅助完成的高强度工作,学生毕业了,培训班结业了,项目颁奖,诸多场合都需要制作一张张证书,数据是现成的,模板也有很多,但是大量的数据中包含了许多人的成绩,名次,等级,奖励,甚至照片等等,非常适合通过程序批量完成和模板的匹配工作,最后生成精美的可视化证书以供打印。这样的需求非常迫切,但是尚未发现有合适的程序来完成这项任务,所以,公布在这里,看看是否有必要立项开发。在开源网站查找证书制作源码。

2024-01-12 09:47:47 371 2

原创 在OpenCV中的奇怪发现

识别线段的时候,有的时候会存在比较粗的线段,或者说是由多条单像素线段并排组成的线段,而且,当这些线段并非垂直或水平的时候,如果改变了角度参数,就会发现直接影响了检测结果,在测试中发现,该参数和线段的倾斜程度严重相关,比如是Π/20,检测出8条并列的线段,哪怕微小的改动成Π/21,也会导致结果变成了2条线段。最近的项目中使用了部分OpenCV的功能调用,比较常见的就是直线识别和圆形识别。项目和习题的差别实在太大,都是霍夫曼变换,在项目中应用就会发现,结果却完全不同,真正的原因只能到源码里去找了。

2023-12-29 10:42:09 386 1

原创 在OpenCV中的奇怪发现

识别线段的时候,有的时候会存在比较粗的线段,或者说是由多条单像素线段并排组成的线段,而且,当这些线段并非垂直或水平的时候,如果改变了角度参数,就会发现直接影响了检测结果,在测试中发现,该参数和线段的倾斜程度严重相关,比如是Π/20,检测出8条并列的线段,哪怕微小的改动成Π/21,也会导致结果变成了2条线段。最近的项目中使用了部分OpenCV的功能调用,比较常见的就是直线识别和圆形识别。项目和习题的差别实在太大,都是霍夫曼变换,在项目中应用就会发现,结果却完全不同,真正的原因只能到源码里去找了。

2023-12-28 16:33:34 361 1

原创 在C#中通过NuGet添加OpenCvSharp4.Extensions后,即可通过NextFrame获得mp4文件里的图像数据,并显示出来。

在C#中通过NuGet添加OpenCvSharp4.Extensions后,即可通过。获得mp4文件里的图像数据,并显示出来。

2023-11-01 11:30:06 82 1

原创 重回互联网精神

曾经的互联网,秉持着自由、共享、免费的精神,成为无数渴望了解世界的一个巨大窗口,但是,如今权贵和资本正在逐渐侵蚀着这个唯一可以自由分享的地方,渐渐地沦为洗脑和赚钱的工具。此外,还有许多正在开发的技术,比如:WEB3.0运行在区块链技术上的互联网,DAO一种全新的人类组织协同方式,IPFS星际文件系统,NFT数字藏品等等。建立一个去中心化的永久保持自由共享免费的互联网是技术人员努力的方向。相信随着技术的进步,一个崭新的时代正在到来,欢迎所有渴望回归互联网精神的人们,共同去创造这个新世界。

2023-10-30 09:32:56 35 1

原创 一次排错经历分享

就是这样一条语句:bmp.Save(@“c:\1.bmp”);竟然总是报错:A generic error occurred in GDI+.不说废话,出错原因就是不能在c盘根目录里写文件。开发环境是win11,vs2022 C#程序。公布在这里,希望能帮助同行们。

2023-04-11 10:01:33 51

原创 如何安全在C#中读写unix格式文件?

【代码】如何安全在C#中读写unix格式文件?

2023-01-09 18:51:46 184

原创 在C#中如何使用UNIX时间戳?

/unix时间快了28800秒,也就是8个小时。为了用四个字节表示当前时间,于是引入了UNIX时间戳,单位是秒,起点是1970年,明白了这些,下面的运算原理也就迎刃而解。//先反转大小端,然后转换成整数。虽然没有直接可用的函数转换,但明白了原理在C#下,依然可以简单地实现。Ticks单位是100纳秒,减去1970年,除完以后就变成了秒。

2023-01-06 12:25:20 1173

原创 点云中检测铁轨

已知不共线的三点坐标,可以确定一个平面方程。最后计算任意点到两个平面的距离,就可以得到所有轨面上的点。这里的重点是垂直平面公式系数的推导,可以直接用于编程计算。

2022-12-22 19:13:51 262

原创 版本控制机制

每个程序都会有升级经历,改错、增加新功能是常见的原因。这里是原创的一套升级机制,可供参考,以便共同创造美好的世界。步骤如下:1、程序在运行中计算自身的哈希值。2、程序向后台发送自己的哈希值。3、后台发现收到的哈希值不是最新的哈希值,立刻发送最新版程序。4、程序把自己换名成随机名字,然后接收最新版程序。5、重启程序。至此,升级结束,下回启动程序就是最新版程序了。这里的亮点有两个,一是换名操作,二是重启程序。换名是因为程序在运行中是不能覆盖和删除的,但是可以换名。重启需要通过进程操作,先启动最新程序然后关闭老

2022-07-01 10:00:04 96

原创 如何构建一个思想空间?

如何构建一个思想空间?思想本来是无法禁锢的自由,但是,要想把真实的思想表达出来,记录下来,分享开来,却受到了太多的限制。有没有一种技术手段可以打破一切束缚,让思想自由地飞翔在天空之上呢?世界本来是一个多彩的世界,万物生长,弱肉强食,善恶美丑,婚丧嫁娶,生老病死,无论是掩饰还是忘却,依然都是每天都在发生的,为何不能展现一个真实的世界呢?思想自由,天下为公,万物平等。计算机是人类科技的一次重大进步,其重要程度和工业革命不相上下,但是归根结底,信息革命留给人类的就是比特。无论哪种技术,让每一个比特记录下这个大千世

2022-06-10 08:17:22 290

原创 如何在网络上传输中文

今天遇到的问题有点意思:想通过网络传输一段文字(也就是字符串),于是不可避免的要把字符串转换成字节数组,网上几乎全是各种Encoding调用方法,如果接收端也是自己写的程序,当然无所谓了,但是,如果是telnet,或者其他的接收程序,就热闹了,极有可能是乱码。中文使用的是gb2312,如果在FrameWork下,还有方法GetEncoding(“gb2312”)可用,基本可以保证中文正常解码和显示。但如果在Core下则只剩下utf-8,16,32了,不得不佩服微软家的msdn,解释的真详细,虽然有改动,

2022-05-11 17:24:54 1073

原创 通过命令行打包发布一个可运行的项目

通过命令行打包发布一个可运行的项目和VC相比,C#最大的缺陷就是可执行能力弱于VC,需要框架支持才能运行。但其功能强大,也实在让人无法割舍。在vs2019下,使用net core 5.0直接编译后生成的exe文件,居然在其他机器上无法运行,提示下载net库。实测win7下也无法运行。后台是nt server8也是如此。好在天无绝人之路,通过上网查阅发现:在项目目录下直接运行下面命令,即可生成单文件夹下的运行目录,在win7和nt后台测试通过。dotnet publish -r win-x64 -

2022-05-06 11:33:50 231

原创 关于内网穿透,以及UDP通讯

关于内网穿透曾经内网穿透的代码,目前测试无法使用,代理不支持UDP,VPN客户端直接退出。目前怀疑移动的路由器出问题的可能性大。通过测试热点连接后台。发现使用130联通热点测试也没有通过。更换36地址也不行。向日葵是成功的。但是,可能是中转方式实现的。如果连最基本的UDP都被封杀,内网通讯也不必大费周章了,公网多个节点中转方式就是唯一的选择。总之,互联网通讯,慎用UDP方式,尽量采用TCP主从模式,必要的话通过中转实现内网之间相互通讯。这就是花费一周时间得出的结论。以下代码是使用upnp方式

2022-04-29 09:53:28 716

原创 C#组播源码测试结论

组播源码测试结论:无论是组播还是广播,只能在同一个网段内进行,或者说需要路由器的支持,目前国内多数路由器都不支持,因此,测试结论就是,只要经过路由器才能相互访问的两台主机,基本上就不要使用这种传输技术了。下面是C#测试源码,在局域网内通过,可以传输数据,单机上更是没有问题。但是,经过路由器以后就不一定了。using System;using System.Net;using System.Net.Sockets;using System.Text;// This is the listene

2022-04-18 15:17:52 264

原创 用对话框来解决同步带来的困扰

用对话框来解决同步带来的困扰 同步问题,是编程过程中经常遇到的麻烦,一不留神就会铸成大错。 同步问题一般存在于处理速度比较耗时的操作中,比如:网络通讯,拨号,数据库检索等等情形中,往往都会出现等待时间在几秒以上的情况,这就会出现同步问题。 最近一个项目的开发中,点击按钮到结果返回一般需要几秒钟时间,这里就存在一个隐患,那就是在结果返回之前,如果多次点击按钮,将会带来同步错误。解决的办法教科书里已经列举了很多,这里不再重复,下面要讲的是一个教科书中没有讲的方法,就是利用对话框,在点击按钮以后弹出...

2022-03-18 09:59:25 203

原创 如何理解错误捕捉机制?

如何理解错误捕捉机制?理想中的程序应该用不上这个机制,但实际上几乎做不到。只要满足特定条件,程序就一定会出错。因此,当程序出现错误的时候,最直接的就是出现一个提示信息,详细的显示了出错的原因和出错时的语句,然后等待选择继续还是终止。这其实是一个最好的解决问题的时机,尤其是刚刚发生的时刻,因为错误的原因各种各样,但是无疑,有很多和时序紧密相关的错误,刚刚发生的时刻就是最佳的排查原因的时机,甚至可能稍纵即逝,很难再现。为此就必须设计一套行之有效的错误捕捉机制,在错误发生的时候,最快的记录下来发生的时间,位置

2021-04-01 16:30:12 161

C#下调用OpenCV显示三种运动目标检测算法效果。

和十几年前相比,OPENCV成熟了,针对不同的检测算法模型提供了成熟的调用方法,可以直接拿来使用,本质上就是矩阵变换。针对当前的项目,游刃有余。至此,项目可行性上的障碍全部消除了。深入研究,就需要查看源码,研究算法,阅读文档了。这是后话,接下来就是何时出发? 通过大量查阅,运动目标检测方面的介绍很多,除了MOG,KNN,GMG外,还有各种差分算法去除背景,在DOC目录里收录了详细文章,如果针对具体的项目,可以做出大量的工作来保证项目的可靠性,相关的源码总共发现了大致三类,一是基于C++的,二是QT的,三是Python的。虽然都有源码,但是许多源码年久失修,三五年以前的,目前就无法运行了,除了C++一如既往的各种项目路径配置,有的就然还要回到vc6下才能运行,然后就是OPENCV也非常麻烦,更新太快,还不向前兼容,还是C#经典,NUGET一下全部搞定了。此外还有各种其他版本的OpenCV的工具包,用来验证算法真是太方便不过了。 接下来,3维开发平台在图像算法验证上又增加了新的工具,如果能够加入AI算法,就真的是如虎添翼了。

2022-09-13

C# SOCKET网络通信程序(客户端+服务端).zip

C# SOCKET网络通信程序(客户端+服务端),可以方便的调试协议.源码可执行.

2019-09-19

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除