自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(202)
  • 资源 (21)
  • 收藏
  • 关注

原创 unique_ptr编译错误can‘t delete an incomplete type

如果一个类没有用户声明的构造或者析构函数,析构函数会被隐式地声明为默认析构函数(8.4)。隐式声明的析构函数是其类的内联公有成员。在编译时遇到test没有声明构造和析构就会默认生成,但是在这个位置还没有include base的头文件,展开模板就会报错。因为test类没有声明构造或者析构函数所以编译器生成了一个默认的构造和析构函数。使用了前置声明的base。

2023-06-19 19:14:13 492

原创 function源码

std::function源码

2023-03-13 23:56:32 280 1

原创 ProtoBuf lite版中使用Any

protobuf

2022-07-06 11:06:58 664

原创 notepad++正则表达式替换字符串

正则,notepad++

2022-07-03 22:07:37 2319

原创 C++构造函数中不能使用多态

在C++构造函数中使用多态

2022-06-27 23:30:48 469

原创 VS查看对象的虚表

在VS中的导出虚函数表在DirectX SDK中的相关例子中,打开对应的工程按如下方式操作:打开项目属性页,配置属性|C/C++|命令行|其它选项(D)例如:/d1 reportSingleClassLayoutIDirect3DDevice9可以导出IDirect3DDevice9的继承和虚函数表信息已启动生成…1>------ 已启动生成: 项目: CFHappy, 配置: Release x64 ------1>pch.cpp1>Utils.cpp1>CFHap

2022-04-23 18:39:32 449

原创 网易Duilib基础

概述Duilib 是 Windows 系统下的开源的 DirectUI 界面库(遵循 BSD 协议),完全免费,可用于商业软件开发。Duilib 可以简单方便地实现大多数界面需求,包括换肤、换色、透明等功能,支持多种图片格式,使用 XML 可以方便地定制窗口,能较好地做到 UI 和逻辑相分离,尽量减少在代码里创建 UI 控件。目前,Duilib 已经在国内有较为广泛的使用。网易 Duilib 使用 C++11 重写,在其原有基础上做了较大重构,搭配谷歌的基础组件 Base 库、基于 Chromium

2021-12-19 18:02:35 1417

原创 GdiPlus

GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。GDI的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。GDI+是Wind

2021-12-12 17:07:30 2065

原创 Windows对话框

一个对话框模板资源创建一个无模式的对话框CreateDialog()函数函数功能:CreateDialog宏从一个对话框模板资源创建一个无模式的对话框,CreateDiaog宏使用CreateDialogParam函数。函数原型:HWND CreateDialog(HINSTANCE hlnstance,LPCTSTR lpTemplate,HWND hWndParent,DLGPROC IpDialogFunc);新建一个windows空项目添加一个main.cpp添加一个dialog资源文

2021-12-12 15:32:07 1286

原创 GUI绘图

简单图形绘制在win32上面绘制图形其实是比较简单的。要想进行图形绘制,关键是找到设备上下文。就我目前所知道的,获得设备上下文主要有这么几种方式:一、根据BeginPaint获得设备上下文,这主要在WM_PAINT使用;二、根据GetDC获得设备上下文,这主要用在非WM_PAINT消息中;三、CreateDC获得设备上下文,这个主要用在屏幕的截取;四、根据CreateCompatibleDC获得设备上下文,然后通过BitBlt进行绘制,这个一般用在图形界面较多的绘制场景。WM_PAINT下用BeginP

2021-11-28 17:33:09 1014

原创 Win32 API 菜单和控件

控件控件概念控件: 特殊的一类”子”窗口,系统已经定义好了窗口类型创建方式和创建窗口类似,调用CreateWindow,每个控件都有自己的ID控件事件发生后,会向所在的父窗口发送通知消息可以使用SendMessage和PostMessage给控件发送消息注意: 创建窗口时必须添加两个属性WS_CHILD:控件是放在我们的窗口上的,自然要作为窗口的子窗口,WS_CHILDWINDOW也一样WS_VISIBLE:设置可见创建控件函数HWND WINAPI CreateWindow( 类名

2021-11-27 00:58:59 2239

原创 屏幕尺寸、分辨率、DPI、PPI

屏幕尺寸下面这张图是华为荣耀7的尺寸图,图上写的是5.2英寸。我们所说的这个5.2英寸是手机屏幕对角线的长度。我们平时是不用英寸这个单位的,我们用的是毫米,厘米,米这些单位。那么英寸和毫米,厘米之间怎样的换算关系呢?1英寸(inch)=2.54厘米(cm)2.54 * 5.2 = ‭13.208‬ (cm)即对角线的长度为13.208cm分辨率(resolution)指给定的面积内“点”或“像素”的数量。有时被称为“解析度”。可分为显示分辨率、图像分辨率、打印分辨率和扫描分辨率等。分辨率可以

2021-11-21 22:45:50 12320

原创 Windows对异常的处理

异常处理异常产生后,首先是要记录异常信息(异常的类型、异常发生的位置等),然后要寻找异常的处理函数,称为异常的分发,最后找到异常处理函数并调用,称为异常处理。异常的分类cpu产生的异常执行指令时检测到的错误,除0,GP,无效指令Machine Check Exceptions, 总线错误,ECC错误,Cache错误预先埋伏的,int 3,调试异常程序产生RaiseException,Win32 APIC++,throw Exception,编译器会翻译为对RaiseException

2021-11-06 00:05:28 522

原创 调试器的原理

软件断点int3指令机器码为1字节,即0xCC没有数量限制局限性属于代码类断点,即可以让CPU执行到代码段内的某个地址时停下来,不适用于数据段和I/O空间对于在ROM(只读存储器)中执行的程序(比如BIOS或者其他固件程序),无法动态增加软件断点。因为目标内存是只读的无法动态写入断点指令。这时就要使用我们后面要介绍的硬件断点。实验是用windbg给MessageBoxW下断点,windbg只有在程序运行的时候才会把断点的地方改为int30:011> u user32!Mess

2021-11-05 23:20:46 865

原创 Windows堆

堆(HEAP)的分配,使用,回收都是通过微软的API来管理的,最常见的API是malloc和new。在往底层走一点呢,这两个函数都会调 用HeapAlloc(RtlAllocateHeap)。同样的相关函数还有HeapFree用来释放堆,HeapCreate用来创建自己的私有堆。 下面是这些函数的调用链:HeapCreate->RtlCreateHeap->ZwAllocateVirtualMemory (这里会直接申请一大片内存,至于申请多大内存,由进程PEB结构中的字段觉得,HeapSe

2021-10-20 00:29:43 917

原创 探索虚拟内存

任务管理器中各内存字段的含义:工作集(内存)专用(私有)工作集(当前进程独占)中的物理内存数量与进程正在使用且可以和其他进程共享的物理内存数量的总和。因此可以这么理解,该值就是该进程所占用的总的物理内存峰值工作集(内存)进程的工作设置(内存)的最大值,可以这么理解,因为工作设置(内存)是波动的,这个项专门记录最大的那个值。内存(专用工作集)工作集的子集,它专门描述某个进程正在使用且无法与其他进程共享的物理内存值。这个值对于一个进程来说也是最重要的,它代表了一个进程到底独占了多少物理内存。内.

2021-10-15 00:17:38 223

原创 Windows内存体系结构

在Windows系统中,每个进程都有自己的虚拟地址空间。对32位进程来说,这个地址空间的大小为4GB,这是因为32为指针可以表示从0x00000000到0xFFFFFFFF之间的任一值。他们覆盖了进程的4GB地址空间。那么Windows是如何实现这一机制的呢?虚拟地址空间的分区(即虚拟地址空间布局)进程的地址空间划分分区x86(32位 Windows)3GB用户模式下的x86 (32位Windows)X64 (64位Windows)IA-64 (64位 Windows)空

2021-10-13 23:07:13 588

原创 Windbg教程

windbg文档网页:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/windbg官网:http://windbg.org/参考网站:https://www.stl-tec.de/tutorials/WinReverseEng/setup/关于工作空间工作空间保存有断点 用户定义的别名 调试器的设置 图形界面信息 调试会话状态等等信息,类似VS的项目文件,PS的工作区。命令概述WinDBG主要是以命令方式

2021-10-10 23:22:31 6525 1

原创 Windows窗口程序及其消息机制

Windows 窗口的诞生过程定义窗口类结构(WNDCLASS) -> 注册窗口类(RegisterClass) -> 创建窗口(CreateWindow) -> 显示窗口(ShowWindow) -> 更新窗口(UpdateWindow) -> 消息循环(GetMessage -> TranslateMessage ->DispatchMessage)当调用完 CreateWindow 函数的时候,应用程序实例以及相应的消息队列已经诞生了。实现代码//

2021-09-20 18:21:20 921

原创 Windows程序入口

WinMain:应用程序入口点每个Windows程序都包括名为 WinMain 或 wWinMain 的入口点函数。 下面是 wWinMain 的签名。int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);这四个参数为:hInstance 称为"实例句柄"或"模块句柄"。 操作系统使用此值来标识 EXE (加载到) 可执行文件。 某些函数需要实例句柄Window

2021-09-20 13:59:35 22958

原创 二叉树的遍历

树形结构树的概念节点: 根节点、父节点、子节点、兄弟节点空树: 一棵树可以没有任何节点一棵树可以只有1个节点,也就是只有根节点子树: 左子树、右子树节点的度(degree): 子树的个数树的度: 所有节点度中的最大值叶子节点(leaf): 度为 0 的节点非叶子节点: 度不为 0 的节点层数(level): 根节点在第1层,根节点的子节点在第2层,以此类推(有些教程也从第0层开始计算)节点的深度(depth): 从根节点到当前节点的唯一路径上的节点总数节点的高度(height): 从

2021-08-15 21:46:09 113

原创 HTTP和HTTPS

什么是协议?网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。HTTP协议是什么?HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTPP有多个版本,目前广泛使用的是HTTP/1.1版本。HTTP原理

2021-08-14 16:58:55 187

原创 TCP详解

TCP的特点TCP提供一种面向连接的、可靠的字节流服务面向连接意味着两个使用TCP的应用(通常是一个客户端和一个服务器)在彼此交换数据之前必须先建立连接在一个TCP连接中,仅有两方进行彼此通信。(UDP可以一对多:组播,广播)应用数据被分割成TCP认为最合适发送的数据块当TCP发出一段数据后,它启动一个定时器,等待目的端确认收到这个报文。如果不能及时收到一个确认,将重发这个报文段当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒,一般是200m

2021-08-10 00:25:06 3623

原创 C++11的各种锁

Mutex(互斥锁)什么是互斥量(锁)?这样比喻:单位上有一台打印机(共享数据a),你要用打印机(线程1要操作数据a),同事老王也要用打印机(线程2也要操作数据a),但是打印机同一时间只能给一个人用,此时,规定不管是谁,在用打印机之前都要向领导申请许可证(lock),用完后再向领导归还许可证(unlock),许可证总共只有一个,没有许可证的人就等着在用打印机的同事用完后才能申请许可证(阻塞,线程1lock互斥量后其他线程就无法lock,只能等线程1unlock后,其他线程才能lock)。那么,打印机就是

2021-08-08 16:29:43 3642 1

原创 Windows socket基础

Windows socket是一套在Windows操作系统下的网络编程接口。它不是一种网络协议,而是一个开放的、支持多个协议的Windows下的网络编程接口Windows socket是以Unix socket为基础,因此Windows socket中的许多函数名与Unix都是一样的。除此之外它还允许开发人员充分利用Windows的消息驱动机制进行程序设计开发。套接字是应用层到运输层的接口。套接字用以表示一条连接的两端。每一个端点由ip和端口组成。因此套接字是由两端点的ip和端口组成。端口是运输层的概

2021-08-02 00:25:44 4366 2

原创 基于C++11实现线程池

为何需要线程池那么为什么我们需要线程池技术呢?多线程编程用的好好的,干嘛还要引入线程池这个东西呢?引入一个新的技术肯定不是为了装酷,肯定是为了解决某个问题的,而服务端一般都是效率问题。我们可以看到多线程提高了CPU的使用率和程序的工作效率,但是如果有大量的线程,就会影响性能,因为要大量的创建与销毁,因为CPU需要在它们之间切换。线程池可以想象成一个池子,它的作用就是让每一个线程结束后,并不会销毁,而是放回到线程池中成为空闲状态,等待下一个对象来使用。C++中的线程池但是让人遗憾的是,C++并没有在语

2021-07-30 00:22:42 618

原创 Windows的网络模型

windows提供了六种网络通信模型:阻塞模型、选择模型、异步选择模型、事件选择模型、重叠I/O模型、IOCP模型。异步通信同步通信IOCP原理IOCP包括三个部分:完成端口(存放重叠的I/O请求),客户端请求的处理,等待线程队列(一定数量的工作者线程,一般采用CPU*2个)线程池中的工作线程的数量与CPU内核数量相同,用它来最小化线程切换代价。一个IOCP对象,在操作系统中可关联着多个socket和文件控制端。IOCP对象内部有一个先进先出(FIFO)队列,用于存放IOCP所关联的输入输出

2021-07-28 00:01:47 1305 2

原创 C++ rb_tree红黑树

在 STL 编程中,容器是我们经常会用到的一种数据结构,容器分为序列式容器和关联式容器。两者的本质区别在于:序列式容器是通过元素在容器中的位置顺序存储和访问元素,而关联容器则是通过键 (key) 存储和读取元素。本篇着重剖析关联式容器相关背后的知识点,来一张思维导图容器分类前面提到了,根据元素存储方式的不同,容器可分为序列式和关联式,那具体的又有哪些分类呢,这里我画了一张图来看一下。关联式容器比序列式容器更好理解,从底层实现来分的话,可以分为 RB_tree 还是 hash_table,所有暴

2021-07-25 23:57:16 712 5

原创 STL 迭代器与 traits 编程技法

在 STL 编程中,容器和算法是独立设计的,容器里面存的是数据,而算法则是提供了对数据的操作,在算法操作数据的过程中,要用到迭代器,迭代器可以看做是容器和算法中间的桥梁。迭代器设计模式为何说迭代器的时候,还谈到了设计模式?这个迭代器和设计模式又有什么关系呢?在设计模式中,关于 iterator 的描述如下:一种能够顺序访问容器中每个元素的方法,使用该方法不能暴露容器内部的表达方式。而类型萃取技术就是为了要解决和 iterator 有关的问题的。在 C++ 语言里面,我们可用以下方式来简单区分一下

2021-07-24 18:26:50 97

原创 C++ 模板

C++模版的诞生程序本质是数据结构+算法,任何一门语言都可以这样理解,这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的“E=MC^2”——一个公式展示出了程序的本质。最初C++是没有标准库的,任何一门语言的发展都需要标准库的支持,为了让C++更强大,更方便使用,Bjarne Stroustrup觉得需要给C++提供一个标准库,但标准库设计需要一套统一机制来定义各种通用的容器(数据结构)和算法,并且能很好在一起配合,这就需要它们既要相对的独立,又要操作接口保持统一,而且能够很容易被别人使用(用到实

2021-07-22 00:16:02 316 5

原创 C++11多线程

线程:线程是操作系统能够进行CPU调度的最小单位,它被包含在进程之中,一个进程可包含单个或者多个线程。可以用多个线程去完成一个任务,也可以用多个进程去完成一个任务,它们的本质都相当于多个人去合伙完成一件事。多线程并发:多线程是实现并发(双核的真正并行或者单核机器的任务切换都叫并发)的一种手段,多线程并发即多个线程同时执行,一般而言,多线程并发就是把一个任务拆分为多个子任务,然后交由不同线程处理不同子任务,使得这多个子任务同时执行。C++多线程并发: (简单情况下)实现C++多线程并发程序的思路如下:将任

2021-07-21 23:37:10 419

原创 STL 配置器(allocator)

配置器:负责空间配置与管理,从实现的角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的 class template。空间配置器:整个 STL 的操作对象(所有的数值)都存放在容器之内,而容器一定需要配置空间以存放内容。什么是 allocator?allocator 有什么用?我们需要对 C++ 的 allocator 的堆内存接口调用顺序有个清晰的认识,如下图所示。allocator 堆内存管理接口 STL 的容器(eg: vector、stack、deque等)有一个共同特征,就是

2021-07-21 22:12:01 1067 3

原创 C++11随机数

在C++11之前,现有的随机数函数都存在一个问题:在利用循环多次获取随机数时,如果程序运行过快或者使用了多线程等方法,srand((unsigned)time(null))这样的设置当前系统时间为种子的方法每次返回的随机数都是一样的。而C++11中提供了真随机数做种子的方法来解决这一问题。random_device标准库提供了一个非确定性随机数生成设备.在Linux的实现中,是读取/dev/urandom设备;Windows的实现是用rand_s,使用的是操作系统来生成加密安全的伪随机数随机数生成

2021-07-21 00:34:44 1487

原创 C++处理日期和时间的chrono库

C++11 中提供了日期和时间相关的库 chrono,通过 chrono 库可以很方便地处理日期和时间,为程序的开发提供了便利。chrono 库主要包含三种类型的类:时间间隔duration、时钟clocks、时间点time point。时间间隔 duration常用类成员duration表示一段时间间隔,用来记录时间长度,可以表示几秒、几分钟、几个小时的时间间隔。duration 的原型如下:// 定义于头文件 <chrono>template< class Rep,

2021-07-18 18:13:35 1512 2

原创 C++数值类型和字符串之间的转换

在 C++11 中提供了专门的类型转换函数,程序猿可以非常方便的使用它们进行数值类型和字符串类型之间的转换。数值转换为字符串使用 to_string() 方法可以非常方便地将各种数值类型转换为字符串类型,这是一个重载函,函数声明位于头文件 中,函数原型如下:// 头文件 <string>string to_string (int val);string to_string (long val);string to_string (long long val);string to_

2021-07-18 17:29:57 415

原创 VS Code 修改用户配置的目录,防止C盘用户数据丢失

创建VS Code的快捷方式目标内指定用户配置的目录“D:\soft\VSCode\Microsoft VS Code\Code.exe” --user-data-dir “User Data”这里指定为VS Code同级目录下的User Data文件夹

2021-07-16 11:39:52 953

原创 Chrome浏览器指定用户数据的保存路径

这里将用户数据放到Chrome浏览器的当前目录我现在的浏览器路径是 D:\soft\Chrome\Application\chrome.exe选中它右键发送桌面快捷方式,将快捷方式剪切到chrome.exe同一目录右击快捷方式修改目标D:\soft\Chrome\Application\chrome.exe --user-data-dir=“User Data”–user-data-dir参数就是指定用户数据的存放目录,这里指定为当前目录的User Data文件夹然后用快捷方式打开浏览器就行了,

2021-07-16 09:57:50 4570

原创 qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““

在 QApplication a(argc, argv); 之前设置环境变量 QByteArray qtdir = qgetenv("QTDIR"); /*QString strDir = "D:\\Qt\\myDebugQt\\myDebugQt";*/ QString strPlatforms = qtdir + QString(R"(\plugins\platforms)"); qputenv("QT_QPA_PLATFORM_PLUGIN_PATH", strPlatforms.toLoca

2021-07-14 16:34:25 337

原创 C++右值引用

右值C++11增加了一个新的类型,称为右值引用(R-value reference),标记为&&。在介绍右值引用类型之前要了解什么是左值和右值。lvalue是loactor value的缩写,rvalue是read value的缩写左值是指存储在内存中、有明确存储地址(可取地址)的数据右值是指可以提供数据值的数据(不可取地址)通过描述可以看出,区分左值和右值的便捷方法是:可以对表达式取地址(&)就是左值,否则就是右值。所有有名字的变量或对象都是左值,而右值是匿名的。右

2021-07-13 00:20:17 2010 1

原创 C++11基础特性

初始化列表C++11 添加了 initializer_list 类型,允许使用 initializer_list 初始化对象STL 容器例如 map, vector 等都实现了 initalizer_list constructor自定义的对象也可以使用 initalizer_list 作为构造函数的参数class CVector{private: std::vector<int> m_vec;public: CVector() {} CVector(const std

2021-07-02 00:03:50 173 2

WinDbg_preview_1.1910.3003.0.zip

WinDbg是在windows平台下,强大的用户态和内核态调试工具。它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏、程序崩溃(IE崩溃)原因,是我们日常工作中必不可少的一个有力工具

2021-10-10

ImagePlugin.zip

QImageIOPlugin扩展

2021-06-17

activemq-cpp编译出来的所有库包括openssl,cppunit,apr

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行 支持的编程语言包括:C、C++、C#、Delphi、Erlang、Adobe Flash、Haskell、Java、JavaScript、Perl、PHP、Pike、Python和Ruby

2021-01-03

QT Player Demo

QT 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。 Player Demo

2020-12-02

PE格式解析.zip

一个操作系统的可执行文件格式在很多方面是这个系统的一面镜子。虽然学习一个可执行文件格式通常不是一个程序员的首要任务,但是你可以从这其中学到大量的知识。在这篇文章中,我会给出 Microsoft 的所有基于win32系统(如winnt,win9x)的可移植可执行(PE)文件格式的详细介绍。在可预知的未来,包括Windows2000, PE文件格式在 MicroSoft 的操作系统中扮演一个重要的角色。如果你在使用 Win32 或 Winnt ,那么你已经在使用 PE 文件了。甚至你只是在 Windows3.1 下使用 Visual C++编程,你使用的仍然是 PE 文件(Visual C++ 的

2020-09-09

最新编译好的Detours

Detours是微软开发的一个函数库,可用于捕获系统API。 HOOK函数 注入DLL 包含lib和.h

2020-06-07

二维码识别zbar.zip

zbar和zxing用的都是自己从github上clone的c++源码/接口编译出来的dll,都是默认参数 再说结论:测了大概几千张图片,两个库的准确率差不多(由于图片场景的多样性,确切的准确率数字也没有什么意义),但是zbar的速度要快很多,大概是zxing的4-5倍。其实两个库的准确率都不太如人意,稍微模糊一点就无法识别,甚至有一些不模糊的图像也识别不出。相比之下,微信的识别效果就逆天了,怎么折腾都能识别出来,让我很好奇。 后来自己尝试改进识别效果,先看了一下二维码的识别原理,太复杂了,无从下手。于是尝试对图像进行预处理改进,结果只是用了一个二值化加开运算就让识别效果得到了大幅提升,让我很奇怪这么简单的预处理为什么开发人员没有去做呢?然后又继续优化了一下,发现二值化的阈值对二维码的识别非常关键,badcase通常是因为阈值不合适导致的,于是牺牲了一下性能,在识别程序中多次尝试不同阈值,最终识别效果达到了比较令人满意的结果,准确率从90%左右上升到99.8%左右,绝大部分打印不清晰导致的badcase都得到了解决

2020-04-12

botan版本2.3.0.zip

botan加密算法库集成了常见的加密及哈希算法,哈希类(hash)如MD5,SHA-1,SHA-256,都是有的,对称加密算法如DES,AES,非对称加密算法如RSA都有支持

2020-04-12

WIN10-PCHunter64.zip

PC Hunter是Windows系统信息查看软件,一种常用性质软件。 软件性质:常用软件 更新时间:2019-01-31 应用平台:32位的2000、XP、2003、Vista、2008、Win7、Win8、Win8.1、Win10 64位的Win7、Win8、Win8.1、Win10 [1]

2020-04-05

Qt中文文档.zip

Qt是一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。 自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,KDE是所有主要的Linux发行版的一个标准组件。

2020-04-01

二维码本地识别.zip

二维码本地识别 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。

2020-03-27

Windows,JAVA,Android的API文档.zip

Windows,JAVA,Android的API文档 Windows API Win32 API JAVA API Android API

2020-03-22

Qt5.13.0 Https库.zip

Qt Network为使用TCP/IP的编程应用程序提供了一组API,我们为SSL套接字和OCSP stapling支持添加了安全通道支持。 Qt 5.13现在使用OpenSSL 1.1来支持Linux和Android上的SSL连接。

2019-10-15

qrencode.zip

C/C++二维码生成库qrencode 现在生活中,二维码可以说是无处不在,微信扫码支付,支付宝扫码支付,就连贴小广告的都带上了二维码了。之前一直想去了解一下,还是太懒了,就没去,现在项目中需要用到这东西,正好借此机会了解一下。

2019-10-07

botan-2.1.0.zip

Botan 是一个 C++ 的加密算法库,支持 AES, DES, SHA-1, RSA, DSA, Diffie-Hellman 等多种算法,支持 X.509 认证以及CRLs 和 PKCS #10

2019-10-07

globalshortcut.zip

Qt实现全局热键支持所有系统 全局热键与特定 nonchild 窗口相关联。 它允许用户从系统的任何部分激活窗口。 应用程序通过将WM_SETHOTKEY消息发送到该窗口来设置特定窗口的全局热键。 例如, 如果m_HotKeyCtrl是CHotKeyCtrl对象, 并且pMainWnd是一个指向在按下热键时要激活的窗口的指针, 则可以使用以下代码将控件中指定的热键与指向的窗口相关联pMainWnd。

2019-10-04

Winhex 19.8 中文版

winhex 是一个专门用来对付各种日常紧急情况的工具。它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丢失等。同时它还可以让你看到其他程序隐藏起来的文件和数据。总体来说是一款非常不错的 16 进制编辑器。得到 ZDNetSoftwareLibrary 五星级最高评价,拥有强大的系统效用

2019-04-28

win7,win10注入CSRSS 不蓝屏

winXp,win7 32 , win7 64 ,win10注入CSRSS蓝屏 这是一个重要的进程,他会随系统的启动而自动开启并一直运行。在大多数情况下它是安全的,你不应该将其终止;但也有与其类似的病毒出现

2019-04-22

贺喜谈笑间纯源码

本人好不容易得到的全部源码 罗培羽—教你用VB制作RPG游戏的源码 希望对大家有用

2013-08-01

空空如也

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

TA关注的人

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