画像の一部を切り抜いて保存
OpenCV2.3でndarrayを利用する。
>>> import cv2 >>> x = 200 #cols >>> y = 200 #rows >>> width = 100 >>> height = 100 >>> src = cv2.imread('src.jpg', 1) >>> dst = src[y:y+height, x:x+width] >>> cv2.imwrite('dst.jpg', dst) True
C++の場合:
画像の一部を切り抜いて保存する
OpenCV2.3のインストールでハマった話
OpenCV2.3のPythonバインディングはnumpyが入っている必要があるっぽい。
うちの環境では/opt以下にPython(2.6, 2.7)を入れてvirtualenvで切り替えているのですが、numpyはいつもvirtualenv下のpipで入れていました。
今回、OpenCV2.3環境が必要になったので2.2と同じようにインストールしていたら、Pythonバインディング用のcv.soが生成されない。
# cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/opt/opencv2.3.1 -D BUILD_NEW_PYTHON_SUPPORT=ON -D PYTHON_EXECUTABLE=/opt/python2.6/bin/python -D PYTHON_LIBRARY=/opt/python2.6/lib/libpython2.6.so -D PYTHON_INCLUDE_PATH=/opt/python2.6/include/python2.6 . ... -- Interfaces: -- Python: YES -- Python interpreter: /opt/python2.7/bin/python -B (ver 2.6) -- Python numpy: NO (Python wrappers will not be generated) ...
numpyを入れる必要があるらしい。
#あとで確認してみたら2.2では Python numpy: NO (Python interface will not cover OpenCV 2.x API) になっていました。
#こちらはnumpyなしでもcv.soは生成されます。
numpyを入れるが、ここでまたハマる。
numpyをソースから入れようとするも上手くコンパイルできない。
仕方がないのでeasy_installから入れようとするもこれもエラー。
# yum install gcc-gfortran # /opt/python2.6/bin/easy_install numpy ... /usr/bin/ld: cannot find -lpython2.6 ...
-lpython2.6がないと言われる。
# ldconfig -p || grep python2.6 libpython2.6.so.1.0 (libc6,x86-64) => /opt/python2.6/lib/libpython2.6.so.1.0 libpython2.6.so (libc6,x86-64) => /opt/python2.6/lib/libpython2.6.so
ちゃんとリンクはされているはず。
悩んだ末、
# export CFLAGS=-L/opt/python2.6/lib/ # /opt/python2.6/bin/easy_install numpy
でインストールできた。正しい解決方法があったら教えてください。
なお、easy_installでインストールしたモジュールのアンインストールはこちらが参考になります。
pythonモジュールのアンインストール
OpenCVに戻る。
# cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/opt/opencv2.3.1 -D BUILD_NEW_PYTHON_SUPPORT=ON -D PYTHON_EXECUTABLE=/opt/python2.6/bin/python -D PYTHON_LIBRARY=/opt/python2.6/lib/libpython2.6.so -D PYTHON_INCLUDE_PATH=/opt/python2.6/include/python2.6 . ... -- Interfaces: -- Python: YES -- Python interpreter: /opt/python2.6/bin/python -B (ver 2.6) -- Python numpy: YES ... # make # make install # ls /opt/opencv2.3.1/lib/python2.6/site-packages/ | grep cv cv.py cv2.so
できました。
なんでOpenCV2.3とPython2.6の組み合わせかっていうと、
開発環境のMacでHomebrewから入れたOpenCV2.3がPython2.6(Macデフォルト)になっていたため。
HomebrewでPython2.7も入れているので、こっちに対応させる方法もあるのだろうけども。
css-modeの中括弧
css-mode(cssm-version "0.11")を普段使っているのですが、中括弧挿入時の挙動が気に入らない。
中括弧挿入時に改行設定してるのですが(setq cssm-newline-before-closing-bracket t)、半角スペースが入り込むんですよね。
( _ はカーソル位置です。)
hoge { _ }
こうなってほしい。
hoge {_ }
なので、css-mode.elを少し変更しました。
(define-skeleton cssm-insert-curlies "Inserts a pair of matching curly parenthesises." nil ;; "{ " _ (if cssm-newline-before-closing-bracket "\n" " ") ; cssm-newline-before-closing-bracket の挙動を変更 "{" (if cssm-newline-before-closing-bracket "" " ") _ (if cssm-newline-before-closing-bracket "\n" " ") "}")
/* cssm-newline-before-closing-bracket t */ hoge {_ } /* cssm-newline-before-closing-bracket nil */ hoge { _ }
となります。うれしい。
ついでに。init.elの設定はこんな感じです。
(setq indent-tabs-mode nil) (setq-default indent-tabs-mode nil) (setq default-tab-width 4) (setq tab-width 4) (setq-default tab-width 4) ... ;; css-mode (autoload 'css-mode "css-mode" nil t) (setq auto-mode-alist (cons '("\\.css\\'" . css-mode) auto-mode-alist)) (add-hook 'css-mode-hook '(lambda () (setq cssm-indent-level 4) (setq cssm-indent-function #'cssm-c-style-indenter) (setq cssm-newline-before-closing-bracket t) ))
参考
css-modeのカーソル位置修正
http://d.hatena.ne.jp/hara_masa/20110306/1299374607
プロ生HTML5@大阪に行ってきました
HTML5 プログラミング生放送勉強会 第11回@大阪に行ってきました。
http://pronama.wordpress.com/2011/10/25/pronama-11-at-osaka/
ブログを書くまでが勉強会だ、ということらしいので感想(というよりメモ)など。
下書き状態で放置して遅くなってしまった。
Windows 8とMetro Style App : @jz5さん
- とにかくWIndows 8の動きがかっこよかった
- Metro Style AppはAndroid/iOSをTitaniumで作る感じに似ていた気がする
- Expression Blendすげー。Winアプリつくるならちょっと欲しいと思った
Project Silk : @shinsukeodaさん
- モダンブラウザのためのWebアプリ開発ガイダンス
- VS Express Editionでも一応動く。赤い文字に負けない
- まだ個人でしか開発したことないからあんまりピンと来なかったけど、そのうち必要になるんだろうなーと思いながら見てた
PythonでWebSocket : @naoinaさん
- Web Socket便利そう
- これを使ってなにか作りたくなった
Sencha Touch : @tworksさん
- JSを使ったスマフォ用UIのWebアプリ開発フレームワーク
- ネイティブアプリ似のUI/UX表現ができる
- デザイナが動きの部分を説明するのに使えそう
- サンプル Kitchen Sink
Web Matrix 2とIE10 : @osamum_MSさん
LT
GroovyでHTML5生成 : @linerlockさん
- ブラウザでのプレゼンはページ指定で飛ぶ機能があんまない印象
- Groovyちゃんマジ便利
NoSQL : @nakajiさん
- NoSQLあんまわからない
開発手法 : @black__seさん
- 開発行程なんかの?話
- この手の話はまだよくわからない
全体的に感じたのは、ああJSは必須だなあということでした。
ちゃんと勉強しないとダメですね。
こういうオープンな勉強会は初めてだったのでドキドキでしたが、楽しかったです。
モチベも上がるし、どんどん参加していきたい。
CvMatについて
公式リファレンス(2.2)でCvMat使ってたので、Pythonから使うときはCvMatの方が良いの?
という感じでCvMatの仕様を調べてみる。
# Numpyと連携ができるから、とかかもしれない
要素
type
型。CreateMatなどで指定するCV_8UC3なんかの値。
rows
行数。height。
cols
列数。width。
step
完全な行の長さ。cols*チャンネル数?
わかんなくなったら
>>> print m
ピクセル
こんな感じに並んでる(イメージ)。
RGBじゃなくてBGRらしい。
ピクセルにアクセスするときは
m[rows, cols][channel]
みたいに。
>>> print m[0,0] (128.0, 138.0, 225.0) >>> print m[0,0][1] 138.0
チャンネル指定しなかったらタプルで返ってくる。
なぜかfloat。
html-modeのキーバインド
Emacs23.3におけるhtml-modeのキーバインド一覧。
helpまんま。
C-c C-a sgml-attributes 属性の挿入 C-c C-b sgml-skip-tag-backward 前のタグ C-c C-c Prefix Command プレフィックス C-c C-d sgml-delete-tag タグの削除 C-c C-f sgml-skip-tag-forward 次のタグ C-c TAB sgml-tags-invisible タグの表示/非表示 C-c C-j html-line <br>の挿入 C-c RET html-paragraph <p>の挿入 C-c C-n sgml-name-char 文字実体の挿入 C-c C-s html-autoview-mode ファイル保存時に自動的にブラウザで表示 C-c C-t sgml-tag タグの挿入 C-c C-v browse-url-of-buffer ブラウザで表示 C-c / sgml-close-tag タグの閉じる C-c 1 html-headline-1 <h1>の挿入 C-c 2 html-headline-2 <h2>の挿入 C-c 3 html-headline-3 <h3>の挿入 C-c 4 html-headline-4 <h4>の挿入 C-c 5 html-headline-5 <h5>の挿入 C-c 6 html-headline-6 <h6>の挿入 C-c 8 sgml-name-8bit-mode Latin-1文字実体の挿入 C-c ? sgml-tag-help タグの説明 C-c DEL sgml-delete-tag タグの削除 C-c <left> sgml-skip-tag-backward 前のタグ C-c <right> sgml-skip-tag-forward 次のタグ M-TAB ispell-complete-word タグの補完 C-c C-c - html-horizontal-rule <hr>の挿入 C-c C-c c html-checkboxes チェックボックスのグループの挿入(C-gで終了) C-c C-c h html-href-anchor <a href="">の挿入 C-c C-c i html-image <img src="">の挿入 C-c C-c l html-list-item <li>の挿入 C-c C-c n html-name-anchor <a name="">の挿入 C-c C-c o html-ordered-list <ol>の挿入 C-c C-c r html-radio-buttons ラジオボタンのグループの挿入(C-gで終了) C-c C-c u html-unordered-list <ul>の挿入
EmacsでHTML書く人って少ないのかな……。
たしかにCodaとか便利そうではあるけれど。
始めました
メモとか