tata色々な備忘録

データ解析、画像解析、化学分析などなど

PyQt(PySide)で画像処理その1(GUIの作成)

久々の更新。

PyQt(やPySide)とOpenCVで画像処理GUIアプリを作ってみる。
※8/31追記 guiqwtはpysideで動かない⇒graphics Viewに変更

1.画面レイアウトの作成

(1)メイン画面

QtDesignerを立ちあげてMainwindowを選択(MacはQt Createrから作成)。

f:id:tatabox2000:20140831133553p:plain

(2)ウィジット(部品)の配置

左のツリービュー(ウィジットボックス)からアイコンをドラッグし、 下記のようにレイアウトする。

f:id:tatabox2000:20140831140941p:plain

使用したウィジットは下記の通り
・Push Button
LCD Number
・Graphics Vier
・Horizontal Slider
・LineEdit
※追記 guiqwtはpysideで動かない⇒graphics Viewに変更

ウィジットボックス中のLayoutの項目で整列できる。適宜活用しましょう。

(3)名称の記入

アイコンやファイルメニューをクリックしてボタンなどに表記する(目的とリンクさせる)。

f:id:tatabox2000:20140831163401p:plain

(4)各ウィジットに名前をつける

右側にあるオブジェクトインスペクタにてウィジット(部品)に名前をつける。
名前を機能とリンクさせて分かりやすくすると良い感じ。

f:id:tatabox2000:20140831142534p:plain

今回はこの名前に設定。 f:id:tatabox2000:20140831212131p:plain

(4)ウィジットのプロパティ

1)画面中央のimagewidgetを選択し、プロパティウィンドウにて mousetrackingにチェックを入れる。
2)Sliderにはプロパティ中のQAbstractSliderにてmaximumの値を254(上2つ)、260000(最下段)に設定。用途は下記の予定。
・254 ;色の閾値最大と最小
・90000:面積の閾値(QLcdnumberの最大値)

f:id:tatabox2000:20140831151506p:plain

(5)シグナルとスロット

シグナル:作業者の動作(テキストを記入した、マウスをクリックしたなど)
スロット:受信側の挙動(テキストの反映、表示など)

f:id:tatabox2000:20140831153759p:plain

今回は下記のシグナルとスロットを対応させている。
・ファイルメニューのQuit⇒MainWindow終了
・各種スライダーの値変更⇒LCDに反映
LCD脇のテキストボックス値変更⇒LCDに反映

(6)保存とpythonコードへの変換

pyqt_Opencv.uiとして適当なフォルダに保存する。 コマンドラインにてそのフォルダへ移動して下記のコマンドを実行する。

$ pyuic4 -i 0 -x pyqt_Opencv.ui -o pyqt_Opencv.py  

PySideの場合は下記

$ pyside-uic -o pyqt_Opencv.py pyqt_Opencv.ui  

ライセンスに関してはPyQtGPL、PySideはLGPLなので、商用するならPySideっすね。

続く(気力があれば)

pythonで散布図行列

pandasを使用して散布図行列や箱ひげを書いてみる。
データはirisを使用。
https://raw.github.com/pydata/pandas/master/pandas/tests/data/iris.csv
(日本語環境テストのため、Nameを種類、lengthを長さ、widthを幅に置換して使用)

前提条件のmatplotlib日本語環境はこちら http://tatabox.hatenablog.com/entry/2013/07/21/025603

# -*- coding: cp932 -*-
import pandas as pd
import numpy as np
from pandas.tools.plotting import radviz

'''matplotlibの日本語環境'''
from matplotlib import rcParams
rcParams['font.family'] = 'IPAexGothic'
rcParams['font.sans-serif'] = ['IPAexGothic']
import matplotlib.pyplot as plt

'''データの読み込み。Windows環境はencoding='cp932'必須'''
iris = pd.read_csv('.//iris.csv',index_col=0,encoding='cp932')

'''最初の5つを表示'''
print iris.head(n=5)

'''概要'''
print iris.describe()

'''相関係数行列とCSV出力'''
iris_corr=iris.corr()
print iris_corr
iris_corr.to_csv('iris_corr.csv')

'''散布図行列'''
pd.scatter_matrix(iris,color='green',diagonal='kde',figsize=(6,6))

'''radviz'''
plt.figure()
radviz(iris,u"種類")

'''箱ひげ'''
iris.boxplot(by=u"種類")

plt.show()

[f:id:tatabox2000:20131103123607p:plainf:id:tatabox2000:20131103123608p:plainf:id:tatabox2000:20131103123606p:plain

他だとpyvttblが良さそう。
https://pyvttbl.googlecode.com/hg-history/0315dcd0bc2fba044fae4449dc9d84f5fc7b66eb/doc/_build/html/scatter_matrix.html

参考

http://blog.livedoor.jp/norikazu197768/archives/12539634.html
http://pandas.pydata.org/pandas-docs/stable/visualization.html (公式)

vimのコマンド整理

vimのコマンドを整理。

i 入力モード
: コマンドモード
v ビジュアルモード
esc ノーマルモード

ノーマルモード

移動

移動
h ↑
j ↓
k ←
l →

w 次の単語に移動
b 前の単語に移動
e 単語の末尾に移動
gg 先頭行
G 最終行
0 行頭
$ 行末

その他

delete
x
Backspace
X
行削除
dd
一行コピー
yy
単語コピー
yw
ペースト
p
インデント修正

コマンドモード

選択行置換(gをつけると候補全て)
:s/置換前/置換後/g
文全体置換
:%s/置換前/置換後/g
確認
:%s/置換前/置換後/gc

検索
/検索語
n 下方向
N 上方向
# 単語検索上
* 単語検索下

入力モード

補完
Ctrl + n
Ctrl + p

gitデビュー

下記サイトを参考
http://d.hatena.ne.jp/killingout_n-bita/20130324/1364126261
http://d.hatena.ne.jp/snaka72/20100602/1275496817
http://d.hatena.ne.jp/shim0mura/20111212/1323660740

1.基本

#フォルダの初期化
git init
#フォルダ内のファイルを監視対象にする
git add .
#全てのファイルをコミット
git commit -a

vimでコメントを記載

#リポジトリの作成
git remote add origin git@github.com:tatabox/test.git
#プッシュして変更を反映
git push -u origin master

通常は以下でOK

#コミットとコメント
git commit -m "コメント"
#プッシュして変更を反映
git push origin master

2.Windowsでの_vimrcの管理方法
http://qiita.com/hide/items/735bb2fc954b17bf410f

#シンボリックリンクの作成
cd C:\Users\user1
cmd /c mklink .vimrc "C:\Users\user1\my_Vim\.vimrc"
cmd /c mklink .gvimrc "C:\Users\user1\my_Vim\.gvimrc"

gitのlnコマンドによるシンボリックリンク
Windowsで機能しないので注意。

3.githubのファイル削除

#ローカルファイル削除
rm ファイル名
#削除内容を伝える
git rm ファイル名
git add .
git commit -m "comment'
git push aaa master

4.リポジトリの複製

git clone リポジトリのURL

vimの環境構築2

参照というかそのまま
http://qiita.com/puriketu99/items/1c32d3f24cc2919203eb

cd ~/vimfiles/bundle
git clone https://github.com/Shougo/neobundle.vim
git clone https://github.com/Shougo/vimproc

_vimrcに下記を記載

if has('vim_starting')
  set runtimepath+=~/vimfiles/bundle/neobundle.vimcall     
  neobundle#begin(expand('~/.vim/bundle/'))
  NeoBundleFetch 'Shougo/neobundle.vim'
  call neobundle#end()
endif

NeoBundle 'Shougo/neobundle.vim'
NeoBundle 'Shougo/vimproc'
NeoBundle 'VimClojure'
NeoBundle 'Shougo/vimshell'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/neocomplete'
NeoBundle 'Shougo/neosnippet'
NeoBundle 'jpalardy/vim-slime'
NeoBundle 'davidhalter/jedi-vim'
NeoBundle 'Shougo/vimfiler'

filetype plugin indent on     " required!
filetype indent on
syntax on

プラグインのインストール
vin上で:NeoBundleInstall
プラグインのアンインストール
vimrcのNeoBundleの記述を消し、vim上で :NeoBundleClean