iOS上mxnet的一个演示App

mxnet是最近火的不行的一个深度学习的框架,支持好多好多语言,有好多好多大牛在写。 之前也有想过把同样很牛很牛的caffe跑到iOS上看看速度怎么样,但是caffe有一大堆文件,感觉做起来很麻烦。 最近看到mxnet居然有一个单文件的版本! 就做了一个简单的图像识别的演示App。跑在6上速度还可以,大概4秒一张图。 代码在这里: WhatsThis-iOS on Github

iOS逐帧处理录像-MPVideoProcessor

一般在iOS上做录像都可以直接使用UIImagePickerController。 但有时候难免需要做逐帧的处理,比如实时的滤镜之类的。 参照这个帖子: A (quasi-) real-time video processing on iOS 把使用AVFoundation做录像的代码,做了一个简单的封装。 Delegate可以得到逐帧的彩色或者灰度图,然后就可以加上自己需要的处理了。 代码放在Gihub上:MPVideoProcessor 具体使用请参见Github上的Readme.

iExplorer

玩iOS的好东西。 这个不是微软的IE,而是iPhone Explorer,应该是因为Apple的压力,名字改成了iExplorer,据说图标也小有改动。 不需要Jailbreak你的iOS设备,连上机器之后打开iExplorer就可以看到各个App下的内容和系统的一些文件。 一般来说,App中用户的数据都是放在App Name/Documents这个文件夹下面,比如游戏存档… iExplorer可以自由地存取文件,所以可以干的事情就多了… 软件主页上提供的截屏:

[iOS]How to save and load a custom object?

Here we go. How to write a custom object which can be archived to a text file? Usually, we use NSKeyedArchiver to serialize an object and write it to a file. Correspondingly, NSKeyedUnarchiver is used to get the object from the file. The NSKeyedArchiver’s interface is like this: + (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path; NSKeyedArchiver is a […]

NSURL

码农Coding的时候有各种不好的习惯。 比如,不喜欢好好地看框架的文档,一旦找到某一个看起来简单易懂的接口,就一直用它。 如果需要之后的处理,往往简单粗暴。 我们以前管这种情况叫做“裸”。最近又不知不觉地写了比较“裸”的代码。 说实话,这个习惯得改,“裸”写的东西往往不健壮,不可读,效率还不高。成熟框架提供的直接可用的接口必须是第一选择。 NSURL是常用的类,用来描述一段URL的。 需要取得URL中不同部分的时候,我们应该用URL提供的接口, 而不是把它当做一个普通的字符串去手工分析。 比如: http://www.testurl.com:8080/subpath/subsubpath?uid=123&gid=456 NSURL *url = [NSURL URLWithString:@”http://www.testurl.com:8080/subpath/subsubpath?uid=123&gid=456″]; 下面是常用的几个接口,和它们的输出。接口意思都符合相关RFC里的定义。 [url scheme] http [url host] www.testurl.com [url port] 8080 [url path] /subpath/subsubpath [url lastPathComponent] subsubpath [url query] uid=123&gid=456 NSURL 英文版 :] NSURL is widely used, but sometimes we are not following the idiomatic usage. When it comes to access […]

[iOS]关于IBOutlet

为了使用Interface Builder,我们需要在如XXViewController.h中增加IBOutlet标记。 IBOutlet对于编译器而言只是一个标记,也就是说,编译器会忽略这个关键字。 Interface Builder则是根据IBOutlet来寻找可以在Builder里操作的成员变量。 需要注意的是,任何一个被声明为IBOutlet并且在Interface Builder里被连接到一个UI组件的成员变量,会被额外retain一次。 常见的情形如 IBOutlet UILabel *label; 这个label在Interface Builder里被连接到一个UILabel。此时,这个label的retainCount为2。 所以,只要使用了IBOutlet变量,一定需要在dealloc或者viewDidUnload里release这个变量。