- 博客(53)
- 资源 (1)
- 收藏
- 关注
原创 Ubuntu平台使用systemd服务实现进程的开机启动
本文记录在Ubuntu系统使用systemd实现进程的开机启动,并管理这个进程,当系统重启或者进程意外崩溃时能重新开启这个进程。
2024-08-15 15:09:59
1211
原创 macOS下编译opencv-4.5.2+opencv_contrib-framework
本博主前后编译了OpenCV的各种版本,感兴趣的可以浏览之前的博文。此篇为iOS编译opencv-framework,官网发布的opencv-4.x-ios-framework.zip不包括opencv_contrib模块,如果不需要里面的功能,则可以直接使用官方版。说明本文使用的系统和软件版本以及工作目录都是本博真实环境,仅供参考。...
2022-07-28 16:07:24
1939
原创 win10编译OpenCV4Android系列2-编译OpenCV4.5.2+opencv_contrib
本文是系列文章2,最终目标是使用jni封装so,在Android上直接调用OpenCV的微信二维码解码接口。
2022-02-28 13:00:30
7113
原创 win10编译OpenCV4Android系列1-Android编译环境搭建
win10编译OpenCV4Android系列1-Android编译环境搭建前言一、配置JDK1.下载JDK2.安装JDK二、配置AndroidSDKTools1.下载AndroidSDKTools2.安装AndroidSDKTools三、配置ANT1.下载ANT2.解压并配置环境变量四、下载NDK总结前言本文是系列文章1,最终目标是使用jni封装so,在Android上直接调用OpenCV的微信二维码解码接口。安装环境如下:1,jdk-8u321-windows-x64.exe2,androi
2022-02-25 11:44:50
735
原创 win10下编译OpenCV的微信二维码库给Dotnet使用
文章目录前言一、编译OpenCV和opencv_contrib二、制作Dotnet可以调用的dll第一步:创建C++空项目并添加一个类第二步:配置OpenCV环境第三步:将C++代码编译成dll三、使用Dotnet验证总结前言Dotnet使用OpenCV库有两种方式:一是使用opencvsharp,目前已经支持到OpenCV4.5.3。二是使用C++编译源码,生成托管或者非托管的dll,给Dotnet使用。推荐方式一的OpenCVSharp,可以直接使用,但是他发布的版本默认设置BUILD_op
2021-12-21 13:49:35
4362
6
原创 YOLOX推理系列4-使用YOLOX训练自己的数据集
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2021-12-08 10:28:35
10816
原创 YOLOX推理系列3-支持NVIDIA-GPU的OpenCV编译
文章目录系统环境一、配置环境二、下载OpenCV包三、编译OpenCV1,构建CMake2,遇到的问题3,安装并配置坏境4,验证四、测试代码系统环境系统环境如下,如果没有安装驱动或者CUDA,可以参考本系列文章1和2。1,Ubuntu 18.042,GeForce RTX 30803,Driver Version 495.444,CUDA 11.55,cuDNN 8.3.0一、配置环境安装可能需要的包sudo apt-get updatesudo apt-get upgrades
2021-12-03 15:28:17
3183
原创 YOLOX推理系列2-Ubuntu18.04下安装CUDA和cuDNN
文章目录前言一、安装CUDA1.查看显卡驱动支持的CUDA版本2.官网下载3.安装过程4.设置环境变量5.验证CUDA二、安装cudnn1.下载cudnn包2.安装cudnn3.查看cudnn版本总结前言深度学习系列文章之安装CUDA和cudnn。一、安装CUDA首先明确的一点是,我们安装的CUDA版本必须与使用的软件版本相匹配。比如,使用pytorch训练模型,在安装好pytorch后,需要查看当前pytorch对应的CUDA和cudnn版本,通常训练模型都是在conda等虚拟环境中安装,我的
2021-12-02 16:14:17
1227
原创 YOLOX推理系列1-Ubuntu18.04安装显卡驱动
文章目录一、查看显卡型号二、安装显卡驱动1.查看适合本机的显卡驱动版本2.安装推荐版本三、禁用 nouveau1.查看 nouveau信息2.禁用 nouveau四、Nouveau是什么一、查看显卡型号如果自己不知道或者不确定自己显卡型号lspci | grep -i vga会得到一个数字代码,我的返回2206打开The PCI ID Repository,输入2206我的显卡型号是GeForce RTX 3080查看显卡型号,是为了从NVIDIA官方网站下载自己需要的显卡版本,而本
2021-12-02 12:05:19
857
原创 微信二维码识别研究
微信二维码识别研究文章目录微信二维码识别研究前言一、在Win10下编译OpenCV4.5.2(含opencv_contrib)二、调试步骤1.链接OpenCV2.编写Demo3.为Demo配置环境(Debug环境)4.修改OpenCV源码三、微信二维码解码流程,浅见1.二维码定位2.二维码解码前言由于工作原因,需要熟悉二维码解析流程,正好微信在Opencv4.5.2中开源了wechat_qrcode源码,现对第一阶段调研做下记录。提示:以下是本篇文章正文内容,下面案例可供参考一、在Win1
2021-10-13 11:37:15
3444
14
原创 Ubuntu18.04安装FFmpeg4.4
Ubuntu16.04,最新FFmpeg(git)支持库的安装sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx...
2020-02-11 16:53:33
608
翻译 笔记-调试技巧
控制台打印字符串#define GRS_USEPRINTF() TCHAR pBuf[1024] = {}#define GRS_PRINTF(...) \ StringCchPrintf(pBuf,1024,__VA_ARGS__);\ WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),pBuf,lstrlen(pBuf),NULL,NULL);...
2019-03-09 21:18:58
150
原创 设计模式心得
Decorator模式装饰模式的作用是动态的给一个对象添加一些额外的职责,采用组合的方式,比继承更灵活。 - 可以变通的添加或减少Component和Decorator类 - 新添加的额外职责仅仅为了满足特定情况才会执行的特殊行为 - 每个装饰功能都放在一个单独的类中,此类包装装饰的对象 - 客户可以有选择的、按顺序地使用这些装饰功能包装对象Composite模式组合模...
2018-04-12 10:15:20
292
原创 iOS 真机 仿真内存告警
NSString *selName = @"_performMemoryWarning"; SEL sel = NSSelectorFromString(selName); if (sel && [[UIApplication sharedApplication]respondsToSelector:sel]) { IMP methodImp = class_getMet
2017-04-25 20:42:46
293
原创 OC内存管理者
有关Objective-C内存管理的方法,实际上不包括在该语言中,而是包含在Cocoa框架中用户OS X、iOS应用开发。 Cocoa框架中Foundation框架类库的NSObject类担负内存管理的职责。 Objective-C内存管理中的alloc/retain/release/dealloc方法分别指代NSObject类的alloc类方法、retain实例方法、release
2017-03-11 09:38:00
226
转载 导航栏透明渐变
1,导航栏透明[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationB
2016-06-12 11:40:38
496
翻译 越狱包ipa制作
1,Edit Scheme中Build Configuration选择Release 2,选择真机,编译出app格式包 3,新建一个payload文件夹,把app包放入,压缩 4,修改后缀名为ipa 或者把app格式包拖入itunes中的应用程序即可
2016-04-26 14:47:45
921
翻译 音频后台播放
1,开启后台任务,让程序保持运行- (void)applicationDidEnterBackground:(UIApplication *)application{ [application beginBackgroundTaskWithExpirationHandler:nil];}2,在info.plist添加Required background modes,为其添加App pl
2016-04-19 17:30:06
810
转载 去掉导航条线
- (UIImageView *)findHairlineImageViewUnder:(UIView *)view{ if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) { return (UIImageView *)view; } for (U
2016-01-29 15:32:07
603
转载 View的完整显示过程
1,view.layer会准备一个Layer Graphics Context(图层类型的上下文) 2,调用view.layer.delegate(view)的drawLayer:inContext:,并传入刚才准备好的上下文 3,view的drawLayer:inContext:方法内部又会调用view的drawRect:方法 4,view就可以再drawRect:方法中实现绘图代码,所有东
2015-10-26 10:07:37
407
原创 计算有效时间段
int clipLength = [self.clipsSlider currentValue]; double videoClipEnd = _videoClipBegin + clipLength; //计算真实剪辑时间段 double endTemp = 0; double period = 0; double extra = 0; NSArray
2015-10-13 09:53:28
759
转载 程序启动的完整过程
1.main函数2.UIApplicationMain * 创建UIApplication对象 * 创建UIApplication的delegate对象3.delegate对象开始处理(监听)系统事件(没有storyboard) * 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法 * 在application:di
2015-10-08 10:15:50
354
转载 监听键盘通知
// 2.监听键盘的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];/** * 当键盘改变了frame(位置和尺寸)的时候
2015-09-30 15:17:55
328
转载 加载plist到模型数组
@property (nonatomic, strong) NSArray *heros;- (NSArray *)heros{ if (_heros == nil) { // 初始化 // 1.获得plist的全路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"hero
2015-09-30 10:34:55
367
转载 加载xib的两种方法
Xib文件的加载 方法1 NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@”AppView” owner:nil options:nil]; 这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中方法2 bundle参数可以为nil,默认就是main bundle UINib *nib = [UINib nibWith
2015-09-29 10:20:32
526
转载 日期操作
1,比较日期NSTimeInterval secondes = 24 * 60 * 60; NSDate * now = [NSDate date]; //模拟昨天 24 * 60 * 60 NSDate * yesDay = [now addTimeInterval:-secondes]; //比较两个日期是否相同 BOOL
2015-09-25 17:20:49
337
转载 文件管理
NSFileManager * fileManager = [NSFileManager defaultManager]; NSString * path = @"/Users/frankhou/Desktop/5195C73719227F8E93D17E77EE24746B.jpg"; NSError * error; NSDictionary *
2015-09-25 16:49:41
300
转载 NSArray排序
//1.使用sortedArrayUsingSelector //也是最简单的排序方式 //数组是按照你存入元素的顺序存储的 NSArray * array = @[@"b",@"d",@"a",@"z"]; NSLog(@"排序前 array %@",array); array = [array sortedArrayUsingSelecto
2015-09-25 15:55:18
357
转载 @property
1.生成get与set方法的声明 2.生成get与set方法的简单实现 3.如果没有声成名相对应的成员变量,那么他会自动生成一个_开头的成员变量@property 参数分为4类 1.与set方法内存管理相关参数 retain: 要生成符合内存管理原则的set方法(应用与对象类型) assign: 直接赋值,(对象类型,基本数据类型) copy : 2.多线程相关 nonatomic:
2015-09-21 15:57:08
275
转载 iOS笔记-手动内存管理
创建对象 1.分配内存空间,存储对象 2.初始化成员变量 3.反回对象的指针地址1.对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据,当我们的引用计数retainCount = 0的时候,系统会毫不犹豫回收当前对象 2.[对象 release] reatinCount - 1 3.[对象 retain] reatinCount
2015-09-21 15:03:49
297
转载 UITextField长度限制
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];- (void)textFieldDidChange:(UITextField *)textField{ if (textField == self.titleField
2015-09-17 14:34:55
303
原创 Quartz2D绘制view
1.新建一个类,继承自UIView 2.实现- (void)drawRect:(CGRect)rect方法,在这个方法中 取得跟当前view相关联的图形上下文 绘制相应的图形内容 利用图形上下文将绘制的所有内容渲染显示到view上面 3.实现drawRect方法的原因是,在drawRect方法中才能取得跟view相关联的图形上下文 4.drawRect方法的调用时间
2015-08-28 14:33:00
282
原创 iOS数据存储的常用方式
一、XML属性列表(plist)归档//1.获取沙盒根路径NSString *home = NSHomeDirectory();//2.document的路径NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];//3.数据存放文件self.filePath = [docPath stringByAppen
2015-08-27 16:56:11
413
原创 TableViewCell的初始化
/** * 如果Cell是通过手写代码创建,会调用这个方法来初始化Cell */- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier
2015-08-27 10:21:33
485
原创 performSegue的执行过程
performSegueWithIdentifier: sender:的执行过程:根据identifier去storyboard中找到对应的线,新建UIStoryboardSegue对象 设置Segue对象的sourceViewController(来源控制器) 新建并且设置Segue对象的destinationViewController(目标控制器)调用sourceViewControl
2015-08-24 10:29:21
923
转载 遍历subviews
NSString *xml = [self digView:self.view];[xml writeToFile:@"/Users/frankhou/Desktop/view.xml" atomically:YES encoding:NSUTF8StringEncoding error:nil];- (NSString *)digView:(UI
2015-08-20 17:14:08
440
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人