自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Q先森的博客

编程是一种爱好

  • 博客(51)
  • 资源 (8)
  • 收藏
  • 关注

原创 一种license文件生成方案

有时,我们为了保护自己写的程序不被滥用(搞点钱),会想绑定硬件,还要设置使用期限。本文就实践了一种license方案,当然没有考虑逆向,这个方面也不在讨论的范畴,所以大家要保护自己的代码时请充分调研!!!首先我们要知道RSA加密是一种非对称加密,它的公钥和私钥是分开的。我们了解一下就可以知道,RSA的公钥是两个素数的乘积,它的私钥约等于需要知道这两个素数才可以得到,通过因数分解基本不可能得到私钥。所以RSA的安全性比较高。

2024-02-05 09:27:43 1049 1

原创 详解ATSS、SimOTA、taskAligned、o2f标签分配

标签分配也是影响目标检测AP的一个重要因素,仅是训练技巧,不会增加推理耗时。例如ATSS就采用自适应正负样本分配的方式带来2%的无痛涨点。最近也是好奇这些标签分配具体是怎么做的,故记录目前学习到的4种算法。

2023-08-16 17:15:06 1073 3

原创 varifocal loss(VFL)介绍

介绍varifocal loss(VFL)并给出代码实现

2023-08-16 10:57:00 2691

原创 cmake添加pcl库后导致程序变慢之编译参数-ffloat-store

gcc -ffloat-store参数影响浮点运算性能,cmake导入某些库时可能引入该编译参数引发整体性能下降

2022-12-14 15:41:27 511 1

原创 单例模式之模板与跨库(DLL、SO)

单例模式用模板实现的话比较优雅方便,基本不需要写额外的代码。但也有个问题,就是封装成库之后,比如windows下是封装成DLL,那么DLL内的单例和外部单例将会是2个不同的实例对象,可以做实验发现2个指针是不一样的地址。这篇文章就是总结一下用模板实现单例,并且可以跨库是怎么做到的。这个宏的作用是禁止外部使用构造函数声明对象,并且添加instance()接口。大家可能会觉得有点像脱裤子放屁,但这都是为了跨库使用,并且尽可能的优美,看到最后就明白了。如果不考虑跨库使用,上面的单例模板已经做到了,\ }(

2022-12-12 09:27:35 955

原创 CMake库依赖关系传递

记录一次linux下调用openvino+opencv库的问题。主要是忽略了CMake的库依赖关系传递,即target_link_libraries时 PUBLIC、PRIVATE、INTERFACE这些字段没有使用,默认使用PUBLIC。如果你发现你编译的时候,报了一堆未引用错误,而且你还没调用这个库,那没跑了,就是依赖设置的问题。主要就是记录一下CMake中target_link_libraries更完整的用法,踩了个坑。

2022-11-05 14:37:46 1899

转载 OCR基于图像数据的信息抽取任务

关键信息抽取 (Key Information Extraction, KIE)指的是是从文本或者图像中,抽取出关键的信息。针对文档图像的关键信息抽取任务作为OCR的下游任务,存在非常多的实际应用场景,如表单识别、车票信息抽取、身份证信息抽取等。然而,使用人力从这些文档图像中提取或者收集关键信息耗时费力,怎样自动化融合图像中的视觉、布局、文字等特征并完成关键信息抽取是一个价值与挑战并存的问题。

2022-09-28 09:37:35 3258 2

原创 jetson-nano编译qt5.15.2带opengl,xcb

文章目录前言一、下载qt源码二、安装xcb依赖环境三、configuremake && install编译好的qt-5.15.2安装qt-creatorqt-creator 添加kit总结前言项目需求原因,需要编译高版本qt到jetson-nano板子,历经10天来回折腾,终于是成功了。期间历经交叉编译失败,然后转直接编译,然后尝试各种版本的坑,最后整理的方法异常简单,只需6小时左右即可流畅在板子上编译成功。文章最后有我编译好的qt-5.15.2版本链接。友情提醒:编译前,先保证你的

2022-05-09 13:31:07 1692 7

原创 gcc中文乱码解决——批量gbk转utf8

前言最近跨平台移植发现一个问题,就是windows下写的代码有中文的都是gbk编码,然后没中文的又是utf-8,还有一些抄来的代码是utf-8-BOM。然后网上说的加编译符号,让gcc帮你转换编码,我发现不行,因为不是gbk的文件会报错。然后还找了个脚本用iconv批量转。。。还好我是有备份的,非gbk的文件会丢失。算了,还是自己撸一个python脚本批量转码吧,不折腾了。python转换脚本非常简单,就是获取所有待转换文件,然后判断是不是GBK,是的话就转。建议你备份一下使用,这个脚本是原地覆盖的。

2022-04-25 15:48:00 936

原创 EISeg标注多文件夹合并

提供一个脚本,专门合并百度的语义分割标注工具EISeg生成的文件夹。EISeg默认标注完之后会在你的文件夹下面生成一个label文件夹,里面会存放png格式的标注图像和一个annotations.json文件。该脚本的作用就是将dirpath路径下所有的标注图像的文件夹合并成一个,文件会被从重命名为序号为1开始的数字名字。import osimport codecsimport threadpoolimport jsonimport shutildirpath = r'xxx'dst_p

2022-03-29 19:26:27 3181

原创 OpenCV图像旋转、缩放、翻转、仿射变换的坐标变换计算

文章目录前言一、旋转+缩放+翻转二、仿射变换前言在工业领域进行目标检测的时候,可能会需要先对图像进行旋转校正、多幅图像拼接等操作。这就需要我们将检测到的目标坐标映射到处理后的图像上。下面说几种OpenCV下常用的坐标变换计算,旋转、缩放、翻转和仿射变换,完全同步对应OpenCV的图像处理操作。一、旋转+缩放+翻转代码展示的是主要逻辑,稍微改一改就可以用到项目里去。m_img是原图,m_src_corners是你需要转换的原图中的坐标集合。 Mat image = m_img; cv::Poi

2022-03-29 09:56:51 4399

转载 git设置代理

文章目录socks代理:http/https代理如果要取消代理:查看配置信息:socks代理:git config --global http.proxy ‘socks5://127.0.0.1:1080’git config --global https.proxy ‘socks5://127.0.0.1:1080’如果有问题,可以把单引号去掉试一下,并且将http和https代理都设置上试一下也可以直接修改~/.gitconfig文件。vi ~/.gitconfig新建或修改这两项配置[

2022-01-15 16:15:14 392

原创 cmake总结(边学边更新)

文章目录0.前言1. 常规设置设置版本号设置工程名称设置可执行文件输出目录、库输出目录设置工程包含当前目录设置子目录2.设置生成目标(编译可执行文件或库文件)添加源文件添加要生成的目标增加依赖项3.添加依赖项(库文件)当库提供了cmake引导文件,以opencv为例当没有cmake引导文件时,以添加Matlab库为例4.生成的库的一些设置去除循环依赖设置库文件名5.添加宏全局添加,所有目标都会加上局部添加,只给指定目标加(墙裂建议)6.添加Option选项7.if控制8.windows下 MD/MT报错

2021-12-12 14:08:33 2590

原创 用模板实现对任意函数计时功能

文章目录前言一、万能函数模板二、void返回值问题三、利用局部变量计时,解决void返回值接收问题完全版代码前言前面一篇文章利用了可变参宏去实现任意函数计时功能,总觉得有点挫,而且无法带返回值。突然想到可以用模板实现这个功能。下面讲一下实现思路和中间碰到的问题。一、万能函数模板先介绍一下万能函数模板,用下面两个函数模板,无论是全局函数,还是类成员函数,统统可以执行。原理就是万能函数指针加上可变参。省略号的位置自己体会一下。template<typename R, typenam.

2021-11-04 19:59:53 154

原创 在宏定义中使用可变参数实现任意函数计时打印

想实现的效果我想对任意一个函数可以实现计时打印,打印出:[函数名]:[耗时]。比如:void function(int a,int b,int c);void function2(float d);check_perf(function,a,b,c);check_perf(function2,d);有点像切片编程的意思,但是C++实现OOP还是蛮烦的,我暂时只想记个时,不想用牛刀。所以就使用了可变参的宏。主要就是涉及#、##、__VA_ARGS__三个东西。代码#include<ch

2021-11-04 11:14:28 664

原创 可变参函数使用方法

简单的函数定义可变参函数可以使用如下形式定义,就是多三个点void test_printf(char* format, ...);认识可变参指针首先,我们以调用vsprintf()为例来熟悉一下可变参指针:#include<stdarg.h>void test_printf(char* format,...){ va_list args; //可变参指针 va_start(args,format);//用最后一个参数告诉可变参指针的位置 vsprintf(format,ar

2021-11-04 09:44:28 183

原创 Cmake在VS下设置MT

问题项目里面用了静态链接库,一直报错,然后百度方法需要设置成MT而非MD模式。但是百度的那些在CMAKE里面替换MD成MT的方法都没用。然后找到了以下解决方案:解决方案TARGET_COMPILE_OPTIONS(${library_name} PRIVATE "/MT$<$<CONFIG:Release>:>")...

2021-11-03 17:21:10 666

转载 cmake设置target的宏

转自: https://zhuanlan.zhihu.com/p/299607413在编译工程时,常常有许多宏需要添加到VS中,如果采用adddefinitions的方式进行添加,会使得不同项目的宏混淆,因此,可以采用settarget_properties的方式,根据项目制定对应的宏set(BUILD_FLAGS "-DHZ_PLATFORM_WINDOWS -DWINDOWS -DHZ_BUILD_DLL" )set_target_properties(Hazel PROPERTIES COMPI

2021-11-03 00:05:17 722

原创 U版YOLOV3用NCNN部署时的问题记录

项目场景:现在将模型部署到嵌入式端,选择的是YOLOV3模型。训练代码使用的是U版的YOLOV3,由于各种原因,我选择直接由pytorch->onnx->ncnn进行部署。而不是直接darknet->ncnn。问题描述:onnx转ncnn时,先是报错,什么Unsqueerze不支持之类的。模型执行时,我惊讶的发现输出节点的维度不对。原因分析:对于问题1,很快就得到了答案,使用onnx-simplifer工具就可以搞定。原因是ncnn不支持一些冗余操作。对于问题2,我

2021-11-02 19:11:19 423

原创 C++可变参模板优雅的表示函数指针

目的我们的是将函数指针R(T::ptr*)(Args...)这种形式变成 Functor<Args...>(ptr) 这种形式在一个同名函数有多个重载方法的时候,这样的方式会比较优雅。Functor是一个结构体或者类RT,这里是从Qt的源码中学到的,防走丢,上代码代码template <typename... Args>struct QNonConstOverload{ template <typename R, typename T>

2021-06-23 15:29:37 1189 1

原创 C++前置声明之模板类

突然想起来前置声明的一个小知识点,防走丢。使用场景是要在类B里面套用模板使用类A,A是前置声明,比如下面这样//假如这个文件叫B.hclass A;class B{public: std::vector<A> vec_A;}直接这样是编译通过不了的,解决办法就是在CPP文件中实例化模板类//假如这个在A.cpp中template class std::vector<A>;...

2021-03-30 19:48:29 2406

原创 汇编实现std::bind类似功能

引言今天群友的一发提问让我想起了很久之前自己碰到的类似的问题。大概可以这么提问来描述这个问题的本质:怎么把类成员函数变成普通的函指调用?问题点类成员函数怎么变成普通的函数指针?隐藏的this指针怎么传递?C++标准库的解决方案自从C++11之后,这都不是事。使用std::function、std::bind即可解决,大概是这样的:#include <functional>#include <iostream>using namespace std;class

2021-03-29 19:28:36 172

原创 简易C++配置文件读取

今天分享一个简易的C++配置文件读取器。大概能读取的格式如下:[group1]arg1=1arg2=2.0arg3=D:/123#我是一行注释[group2]arg1=woshiniyeye大概说下几个点,不懂的自行百度(大佬当我放屁,没啥高级货):完全使用标准库实现(说的屁话)单例模式call once初始化参数可以给默认值,防止没读取到值中间不能有空格组名不能重复,每个组当中的节点名不能重复值不支持中文直接上代码,先来头文件#pragma once#inclu

2021-03-19 20:19:47 896

原创 labelme转YOLO格式脚本

啥都不多说,直接上代码,多线程操作,转换很快。我的labelme是自己改过的,如果报 label_file.imageWidth错误,请自己读一下图片的宽高。用法:直接改一下dirpath,dstpath路径即可,dirpath里面可以有子文件夹,最后dstpath里面的标定内容是从0开始顺序编号的文件。import osimport iofrom io import BytesIOimport uuidimport PIL.Imageimport codecsimport threadpoo

2021-03-12 18:23:55 2724 11

原创 winograd卷积的实现——ncnn的x86版本的一点心得

winograd卷积?论文题目:Fast Algorithms for Convolutional Neural Networks链接传送:https://arxiv.org/abs/1509.09308v2 请读者看过论文再往下看,这论文真的不难懂。下面的内容假设读者已经阅读过论文。核心公式Y=AT[U⊙V]AY=A^T[U\odot V]AY=AT[U⊙V]A其中,U=GgGTU=...

2019-08-21 21:42:52 2229 2

原创 C++ shared_ptr与weak_ptr结合使用的例子

shared_ptr描述shared_ptr采用引用计数,指针之间共享内存,传递一次引用就加1,引用数为0时自动销毁内存weak_ptr描述weak_ptr为弱引用指针,主要用来辅助shared_ptr的使用,给它赋值不会增加引用计数,有时候不得不两者一起用,看下面一个例子。example假如我们有这样一个需求:用户需要几个API算法接口一起工作(比如处理多个视频,每个视频的...

2018-12-07 12:57:10 2140

原创 opencv选框操作

引言在实验阶段,有时我们需要简单的GUI交互,比如拉一个框。下面就奉上选框的Demo代码,原理很简单,就是获取鼠标事件然后进行一些简单的操作。如果你不熟悉GUI操作,不妨看看吧。代码#include &lt;opencv2/highgui.hpp&gt;#include &lt;opencv2/core.hpp&gt;#include &lt;opencv2/videoio...

2018-05-10 11:08:32 1771

原创 OpenCV FileStorage读写操作

引言有时我们需要保存一些训练数据,或是相机标定结果,亦或是临时存储一些图片等等。这时,我们可以使用FileStorage加上FileNode来完成这些操作。FileStorage 和 FileNodeFileStorage这个类可以看成是纸+笔的功能,负责保存内容和写入内容;而FileNode可以看成是眼睛,读取纸上的内容。FileStorage拥有真正的内容,而FileNode仅拥有...

2018-05-09 21:08:54 15380 5

原创 C++逗号和移位运算符简化写入操作

常见的移位运算符写入操作我们应该对这种操作很熟悉:cout&lt;&lt;1&lt;&lt;2&lt;&lt;3&lt;&lt;endl;没错,这会输出1,2,3。 实际上这种效果得益于重载了移位运算符,函数原型应该类似于:ostream&amp; operator &lt;&lt; (ostream&amp; out,int data);能简化一下吗?现在我...

2018-05-09 14:27:02 526

原创 Qt多线程编程示例--代码基于python

前言 本教程适合像我一样接触多线程不深的新手,也适合pyQt或qt新手,大神勿喷,主要用于自己学习总结。由于今天需要处理1000多个视频的相关工作,以往那种直接new很多个QThread的操作会直接卡死,所以模拟了一个线程池,同时只并行几个任务,余下的任务在队列等候,很像我们平时下载东西时那样子。下面这个示例是我编程的一个结构和思路,比较简单,大家不妨看看。当然,Qt也自带了线程池QThread...

2018-04-01 01:48:57 1910

原创 python-np.hstack()避坑

import timeimport numpy as npfeat1 = np.zeros([10000])time1 = time.time()feat = np.hstack((feat1,feat1))time2 = time.time()print(round(time2-time1,10))time1 = time.time()feat2 = np.hstack(feat1

2017-12-12 22:31:35 4700

原创 初探opencv:数据结构Mat

对opencv库中的Mat数据结构做了一些简介分析。

2017-08-08 10:10:25 328

原创 Qt for android手机屏幕当鼠标用

由于无线鼠标忘记带回家了,想躺在床上看电视(电视机屏幕当显示器)怎么办呢?HOHO,我们的手机屏幕本来就是个触摸板,嘿嘿,那就用手机屏幕当鼠标好了。

2017-02-09 14:42:27 1558

原创 流行的圆角阴影带动画的窗口总结

现在的应用例如QQ,通常有一个美观的轮廓,有阴影特效,边上可能还带点圆角,然后可以自由移动、变化大小、带开启关闭动画等等。如果用电脑自带的那种风格可能大家都不太喜欢。前面有2篇博文写了一下实现的过程,但是可能写的有点乱而且还有点问题,也没示意图。现在翻开博客,打开Qt又重新总结了下,希望自己忘记了也可以看看吧。

2017-01-26 18:45:44 1103

原创 Graphics View Framework之坦克大战(二)

运用Qt的Graphics View Framework完成坦克大战

2016-10-26 19:17:47 684 1

原创 Graphics View Framework之坦克大战(一)

利用Qt编写坦克大战

2016-10-24 16:24:10 666

原创 Qt完美实现切图

Qt完美实现切图

2016-07-29 20:23:48 4130 1

原创 Qt实现顶层窗口特效--阴影和圆角

Qt实现阴影和圆角窗口

2016-07-28 14:14:57 9037

原创 Qt实现窗口关闭动画效果

Qt实现窗口关闭动画

2016-07-24 21:41:52 7389

原创 Qt无边框窗口实现拖动和改变大小(修改)

Qt无边框窗口实现拖动和8个方向改变大小

2016-07-20 23:52:08 15109 13

qt-5.15.2-jetson-nano

jetson-nano,jetpack 是4.6.1版本。编译的qt5.15.2,带xcb, 带opengl, qml可用。 在板子上编译大概需要6小时,还会碰到各种问题,试错成本比较高。有需要的小伙伴可以省去大家编译的烦恼,节约时间。

2022-05-09

opencv4.0+contrib_cuda9.1_cudnn7.1_vs2015带属性表配置

最新版opencv4.0+contrib GPU版本,cuda9.1+cudnn7.1+vs2015 debug release都有。。带属性表配置,直接能用

2019-01-22

opencv3.3 Qt5.8 mingw编译(修复,带include)

opencv3.3版本,使用Qt5.8mingw编译,带include,所有齐全。

2018-04-01

C++ GUI Qt4编程 第二版 带书签

Qt入门文档。虽然如今Qt已经5.9 6.0也在测试中,但是基本的东西都在以前的版本中了。

2017-10-16

Qt5.8 Opencv3.3 mingw编译版

最新的OPENCV3.3版本,已经通过Qt5.8的mingw编译器编译,可以直接解压使用。省去自己编译的麻烦。就为赚点积分嘛~~~~

2017-10-16

effectiveC++第三版中文版

《Effective C++:改善程序与设计的55个具体做法》(中文版)(第3版)一共组织55个准则,每一条准则描述一个编写出更好的C++的方式。每一个条款的背后都有具体范例支撑。第三版有一半以上的篇幅是崭新内容,包括讨论资源管理和模板(templates)运用的两个新章。

2017-10-16

深度探索C++对象模型

作者Lippman参与设计了全世界套C++编译程序cfront,这本书就是一位伟大的C++编译程序设计者向你阐述他如何处理各种explicit(明确出现于C++程序代码中)和implicit(隐藏于程序代码背后)的C++语意。   《深度探索C++对象模型》专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这《深度探索C++对象模型》让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。Lippman澄清了那些关于C++额外负荷与复杂度的各种错误信息和迷思,但也指出其中某些成本和利益交换确实存在。他阐述了各式各样的实现模型,指出它们的进化之道及其本质因素。书中涵盖了C++对象模型的语意暗示,并指出这个模型是如何影响你的程序的。

2017-10-16

21天实战caffe带书签清晰度一般PDF

《深度学习:21天实战Caffe》是一本深度学习入门读物。以目前已经大量用于线上系统的深度学习框架Caffe为例,由浅入深,从 Caffe 的配置、部署、使用开始学习,通过阅读Caffe源码理解其精髓,加强对深度学习理论的理解,最终达到熟练运用 Caffe解决实际问题的目的。和国外机器学习、深度学习大部头著作相比,《深度学习:21天实战Caffe》偏重动手实践,将难以捉摸的枯燥理论用浅显易懂的形式表达,透过代码揭开其神秘面纱,更多地贴近实际应用。 【带书签,清晰度一般】

2017-10-16

空空如也

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

TA关注的人

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