今天花了四个小时, 终于在linux下把eclipse下java开发opencv给搞定了... 至于为什么花这么久的时间... 且听我慢慢讲...

linux编译安装opencv

首先, linux下安装opencv其实不麻烦的, 参考文档即可完成: http://docs.opencv.org/trunk/doc/tutorials/introduction/linux_install/linux_install.html

大致有以下几个步骤:

1) 安装gcc以及cmake等等乱七八糟的软件(不过ubuntu下默认差不多都有了吧...)

sudo apt-get install build-essential python-dev cmake

2) 下载opencv-2.4.8.zip并解压缩

3) 新建一个build文件夹

cd ~/opencv
mkdir build
cd build

4) 在终端里输入:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX ...

INF422的TD2, 这节TD是要做一个多线程筛选质数的程序, 关于java的多线程, 以前用过但是不知道啥意思, 在这里总结下.

创建进程

为了实现多线程, 需要定义一个新的class, 有两种方法: 或者继承自Thread类, 或者实现Runnable接口(关键是重载run()方法).

继承自Thread类

  • 写法1: 定义一个继承自Thread的内部类--

    class [类名] extends Thread{
    方法1;
    方法2;
    
    public void run(){
    // …
    }
    属性1;
    属性2;
    
    }
    
  • 或者用下面种内联(inline)的写法, 不用给这个类起名字了(不过还要给这个实例取名字):

    private Thread [实例名] = new Thread () {
        public void run() {
        // ...
        }
    } ;
    

然后让进程开始, 就是: t.start(); 如果用 ...

这学期INF422, 第一节课就是android安装调试环境的搭建(居然要一节课?), 这里总结一下.

第一步: 下载bundle

下载ADT-Bundle 解压缩以后啥都有了, 包含一个eclipse...

第二步: 修改环境变量

linux下的环境变量放在.bashrc文件, 加入下面一行:

PATH=$PATH:<dir>/sdk/tools/:<dir>/sdk/platform-tools/:

其中<dir>是放置SDK的目录地址.

测试一下好不好使, 在终端中输入android, 看是否会弹出SDK manager

第三步: 新建一个virtual machine

可以用eclipse的AVDmanager做, 也可以用命令行做.

输入:

android list targets

找到想要的target(我们要4.1.2)的那个id(一个数字), 然后, 运行命令:

android create ...

S01E02: 开发环境搭建

  • 直接去 developer.android.com/sdk/ 下载bundle解压即可, 里面包含eclipse
  • 新建一个模拟器: 内部存储一般64MB足矣:

S01E03: android项目目录结构

第一个android程序

new-->android application

目录结构

  • com.example.helloworld这个包名一般为网址倒着写, android是按照包名来区分不同APP的
  • src/目录下存放java程序
  • gen/目录下存放系统自动生成的文件, R.java里给每一个控件或变量赋予一个id, 千万__不要手动修改R,.java内容__!!
  • assets/目录下和res/目录下都可以放各种外部文件(ex. 图片), 但是assets下的文件不会在R.java中生成id
  • res/layout/ 存放布局文件(xml格式)
  • AndroidManifest.xml用于统筹

S01E04: 技术结构

四层结构图

开发位于最上层application

基于组件的应用程序开发

搭积木

常见组件 ...

ubuntu已经出到了13.04, 我之所以坚持使用ubuntu10.04的版本(到现在已经三年了, 现在10.04已经过了支持周期而我还在继续用它), 主要是因为ubuntu出的unity界面以及gnome3的界面实在是用起来不爽(吐槽不已!!)...

目前我的lucid(ubuntu 10.04)经过我的配置, 在我用来已经十分顺手了.. 不过长久这么下去也不是办法...... 在换新的主力系统之前, 把我目前这个系统的配置写下来.

安装的软件

写一下用起来特别爽的一些软件:

  • geany

万能IDE, java/python/Cpp/matlab(octave)... 甚至tex都是用它写的, 轻巧强大.

  • zim桌面维基

神器, 用来写笔记整理思路, 这篇就是在zim下写的. 自从2012年发现zim这个东西以后, 到现在写了上百条笔记了, 确实方便.

  • GNU octave

matlab的开源替代, 语法和matlab完全兼容, 毕设就是用它做的, 如果不用matlab工具箱的话, 这个是很好的选择, 而且比较小巧, 启动很快. ......不过法国人貌似比较喜欢他们自己搞出来的scilab.

  • 音乐播放器audacious

界面和简洁, 用起来蛮好, 不过可能其他播放器也差不到哪里去 ...

眼看三月又要结束了, blog还没有更新, 拿来以前写在zim里的一条笔记充数...

有了zim以后, 几乎不再用office了, 常用它编辑一些富文本, 比如加粗, 下划线, 斜体什么的, 有快捷键操作, 很方便, 插图也很简单. zim是我认为的神器(神器=小巧+强大)之一.

有时候用zim写好的笔记给别人看时, 直接按"ctrl+p"就可以打印成网页的格式了, 非常方便(而且得承认, 单论富文本的显示效果, 网页格式 > pdf格式 > doc格式). 只是有一点不太好, 就是有时插入的照片很大, 在浏览器里查看的时候显示的还是原尺寸图像, 非常方便...

查了一下, 其实只要在html文件关于插入图片那一行加入width="100%" height="100%" style="z-index:-100"就可以了.

比如, 在zim生成的html文件里, 这样替换就可以了:

<img src="./xxx网页_files/IMG_1186.JPG ...

这个其实是三月份的时候做的, 当时刚刚学会用urllib和正则表达式做一些爬虫, 于是结合人民群众的需要, 写了个小脚本(福利~)

不过现在我还只是会照葫芦画瓢那样用urllib, 没什么长进...

github地址: https://github.com/X-Wei/yssy_ppp_pic_downloader

1.

功能就是下载水源ppperson板里帖子的图片, 并且每个帖子一个文件夹放好. 通过修改main函数可以选择下载最近一页的帖子还是下载全部帖子(或者最近几页的帖子)

原理很简单, 分析网页的html代码, 用正则表达式找出图片的地址然后下载到本地. 当时我已经写了两三个简单的爬虫, 所以这个写得蛮快, 而且只用50行就搞定了...

不会用多线程, 只能一张一张下载, 帖子数目实在太多了, 我让它跑了一晚上, 第二天跑完, 下载了8个G的图, 几千个文件夹(囧)......

2.

不过还是遇到了一些问题, 比较老的帖子会有些图片404, 这时或者这个帖子对应的文件夹为空, 或者里面的图片其实不是图片, 而是出错信息的html代码(虽然看后缀是个图片). 我需要把那些不是图片的文件删掉, 而且要删掉所有的空文件夹.

删除不是图片的文件(其实应该是删除纯文本文件), 在水源发贴问, 用shell命令(perl)做到了(虽然不明白为什么这样写...):

find yssy_ppp ...

毕设完了, 把答辩时用的beamer模板拿出来分享下.

github项目地址:

https://github.com/X-Wei/aBeamerTemplate4SJTU

我是tex菜鸟, 基本是遇见什么问题然后上网搜一通找到解决方案... 这个模板自然也是参考的别人的了...

参考自Yixf’s blog, 我只是修改了一下主题, 换了一下交大的图标, 并且做了一些常用功能的例子...

效果截图:

注意

  1. 使用xelatex编译生成, latex估计不行, xelatex的配置参考这里;

  2. 编辑内容直接修改beame_body.tex即可, 改变设置一般在beamer_header.tex里

  3. 我用的是文泉驿的字体, 可以修改beamer_header.tex改变字体设置, 查看已安装的中文字体的命令为: fc-list :lang=zh-cn

  4. 个人一点感觉: 用tex写ppt有时也会因为少些括号或者什么地方没注意老编译不过, 所以用tex写也不一定能比用powerpoint方便, 不论啥工具, 只要能get things done,就是好工具~