Processing the capillary force video

# Frames Export

Get frame rate information

videoname=T-L\ _\ 1-50\ tip-tip.avi
ffmpeg -i $videoname 2>&1 |grep -o '[0-9]\+ fps'

The output is 30 fps

ffmpeg -i $videoname -r 30 output_%04d.png

# Edges Detection

The Canny edge detector is used in this step.

In [1]:
from capillary import edge, fitting, display
In [8]:
from importlib import reload
reload(fitting);
reload(display);
more ...

Covariant Linear Fit

# Aim

Minimize $$\sum_i \mathrm{distance}^2(\vec r_i, \mathrm{line})=\sum_i (\vec r_i\cdot \hat n-\rho)^2$$ for line $\vec r\cdot \hat n-\rho=0$. It is equivalent to

  • The principle axis with least moment of inertia
  • The eigenvector with largest eigenval for the covariance matrix
more ...


ipynb2pelican Plugin released!

Yet another Pelican Plugin for blogging with Jupyter Notebooks using MetaCell to store metadata.

Thanks to super cow power of python, we can finally publish ipynb easily! Below is the README.md from the project at this time.

more ...

Javascript 学习小记

研究了一下Linux平台做笔记的软件,发现为知笔记半死不活,bug很多。其他的笔记程序尝试了leanote等各种软件都感觉难以使用,要么功能太弱,要么没有linux客户端。总计一下我想要的笔记软件的要求:

  • 支持Markdown
    • 支持嵌入代码块的语法高亮
    • 支持latex输入一些基本的数学公式
  • 电脑上使用起来方便
  • 方便用手机查看
  • 方便分享给其他人
  • 软件稳定,无明显BUG,体积小,依赖少

最终我发现了NBViewer+Jupyter Notebook+Github/Gist的组合。

注:现在更倾向于用Jupyter Notebook+Pelican的组合了,参见Blogging with Jupyter and Pelican

  • 存在的问题:刷新麻烦,需要手动加?flush=true
  • 解决方案:UserScript脚本Refresh NBViewer Button。具体请看描述。

为了写这个脚本,特意学习了一点js

more ...

Jupyter Notebook的配置

# 默认目录

jupyter notebook --generate-config
vim /home/zpj/.jupyter/jupyter_notebook_config.py#查找dir设定notebook根目录

找到c.NotebookApp.notebook_dir条目,修改为启动jupyter后打开的目录,如/home/zpj/code

# 配置pylab, matplotlib默认载入

导入库,内联svg输出,需要运行:

%pylab
%matplotlib inline
%config InlineBackend.figure_format = 'svg'

# 配置ipython

# 目的

  • 设置pylab环境自动载入
  • 为notebook设置inline显示,使得图片嵌入在文档中
  • 设置矢量svg格式可以使生成的图像在任何屏幕下获得清晰的显示

# 步骤

创建配置文件

ipython profile create

编辑ipython_config.py

vim ~/.ipython/profile_default/ipython_config.py

修改内容为

c.InteractiveShellApp.pylab = "inline"
c.InlineBackend.figure_formats = ['svg']
c.InteractiveShellApp.pylab_import_all = True
more ...




QtCreator使用小结

# Debug

首先要看使用的是什么构建系统:

  • qmake 不需要额外的设置
  • cmake Debug需要在生成配置的时候进行额外参数设置
  • qbs ???

QtC在左下角的Debug按钮一定要在Debug模式下运行才能有效。

进入Debug模式如果是qmake构建系统不需要额外配置。但是如果是cmake则每次都要重新生成配置。

参考Debug with cmake and qtcreator可知生成配置的时候应当添加参数-DCMAKE_BUILD_TYPE=Debug

# C++11

  • CMake: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  • qmake: QMAKE_CXXFLAGS += -std=c++0x
more ...