可変ブログ

色々メモとか。とりあえず自分が分かるように。その後、なるべく人が見て分かるように。可変。

いろんなURLの個人的なまとめ。

増えてきたら個別に分ける。


Ubuntu関連URLの個人的なまとめ。

増えてきたら個別に分けます。


proxy設定のまとめ

dns name server設定

baseよりinterfaceに記述したほうがいい?
いろいろな方法があっていまいちどれが正しいのかわからない。


ライブメディアを使ってUSBにubuntu14.04をインストールする。

 Win10にOpenCV3.2を導入します。基本的に導入方法はどのバージョンでも同じだと思います。


環境

  • Win10
  • ubuntu14.04



流れ



USBメモリーを2本用意する。

1本はライブメディア用なので容量はそんなになくて大丈夫です。
もう2本目はUbuntuがインストールされてそこでいろいろ作業するようになるのでそれなりに容量のあるものを用意してください。


UbuntuのISOをダウンロードする。

ここから。
Ubuntu 14.04 LTS 日本語 Remix リリース | Ubuntu Japanese Team


Universal USB Installerをダウンロードする。

ここか、
Universal USB Installer 1.9.7.4 - ダウンロード
ここから。
Universal USB Installer - Easy as 1 2 3 | USB Pen Drive Linux
適当なことろにダウンロードして解凍する。


Universal USB Installerを使ってUbuntuのISOを1本目のUSBに焼いてライブメディアを作る。

1本目のUSBメモリFAT32形式でフォーマットしておきます。
そうしたら、ダウンロードしたUniversal USB Installerを起動してOSとISOとメディア(フォーマットした1本目のUSBメモリ)を選択して書き込み開始する。

1本目のUSBを使ってブートして2本目のUSBにUbuntuをインストールする。

書き込みが終わったら、パソコンをシャットダウンしてBIOSからライブメディアをブートします。
2本目のUSBを挿します。必要ならGPartedを起動、パーティションを分けます。
パーティションの作り方は、右クリックからアンマウントして削除して新規で作ります。
Winで読めるように共通の領域を作るならFAT32形式のパーティションを左詰めで作ります。
残りはUbuntu用にext4でフォーマット。
必要ならスワップ領域も作る。(メモリが足りなくなった時に仮想メモリとして作用する領域。通常PCの搭載メモリと同量かその倍のサイズにする。)
パーティションの分割が終わったらUbuntuインストーラを起動します。
インストールの種類でそれ以外を選択。
パーティションの初期化にチェック。マウントポイントは『/』で。
ブートローダをインストールするデバイスで、USBメモリを選びます。
あとはインストーラの指示にしたがってインストール


WindowsにUbuntuの仮想環境を導入する。

Windows10にUbuntu14.04の仮想環境を導入します。
取りあえず流れだけ。と言いつつ、だいたいこれがほとんどです。


環境

  • Windows10
  • Ubuntu14.04



流れ

  • UbuntuのOSイメージをダウンロードする。
  • 仮想環境構築ソフトをインストールする。
  • 仮想環境構築ソフトとOSイメージを使って仮想環境を構築する。



USB切替機を自作する。

メインのPCに加えてラズベリーパイをいじるようになりました。
まあラズベリーパイならメインのPCから遠隔操作すればいいのですが、そこに最近はSurfaceが追加されてキーボードマウスがもう一セット必要になってしまいました。
予備キーボードマウスはあるっちゃあるんですが、置くスペースもないし、何よりいちいち使い分けるのが非常に面倒です。
そこでUSB機器を複数のPCで切り替えられるUSB切替機を探してみたんですが、なぜかすごく高い。4つ切り替える切替機で1万とかします。(今はなんかすごく安くなっていますね。探し方が悪かったのかも。)
ということで、そんな高いもん買うならと思い、作ってみました。
作り終わってから記事にしようと思いついたので画像は完成したものしかありません。完成したものしかないといいつつ画像は今度アップロードします。


材料

  • ケース
  • 配線
  • オス―オスUSB端子 3つ
  • メス―メスUSB端子
  • ユニバーサル基盤
  • ロータリースイッチ



作り方

原理は簡単。単純にUSBの4端子をロータリースイッチで切り替えるだけです。
回路図は以下の通り。



他の人が自作しているものを見ると、グランドが共通だったり電源が共通だったりしますが、
電位のズレによる電流の逆流等が怖いので、電源もグランドも信号線ごとすべて切替えます。(本当はスイッチングノイズ対策とかしたほうがいいのかも)
そのためロータリースイッチは4回路3接点のものを使います。
ロータリースイッチの回路図は以下の通り。



家には電動ドリルなんてものはないので、ミニリューターとやすりとデザインナイフで頑張ってケースに穴をあけます。
メス―メスUSB端子とオス―オスUSB端子を無理やり分解して端子の部分に無理やり半田します。
伸ばした配線をロータリースイッチに半田してケースに収めて完成です。



今のところ問題なく使えてますが、やっぱり既製品を買ったほうが良いでしょう。
既製品は何より、PCやUSB機器を壊す心配がないのがいいですね。
今なら4分岐を2000円くらいで買えるようです。というか結局買っちゃいました。↓


Amazon CAPTCHA

OpenCVを使ったカメラの歪み補正。

OpenCV3.1を使ってカメラの歪み補正を行う。
取りあえず流れだけ。


環境




流れ

  • チェスボードの画像を用意する。
  • チェスボードのコーナーを検出する。
  • 検出したコーナーの情報の精度を上げる。(サブピクセル精度。)
  • チェスボードのコーナーの世界座標系を指定する。(要はチェスボードのマス目の現実での大きさを指定する。)
  • これらの情報からカメラの内部パラメータを取得する。
  • 取得したパラメータを使ってキャリブレーション



OpenCV3.2とcontribをWin10に導入してビルドしてサンプル実行。

 Win10にOpenCV3.2を導入します。基本的に導入方法はどのバージョンでも同じだと思います。


環境



流れ

  • Visual Studio Community 2015をインストールする。
  • Cmakeをインストールする。
  • OpenCV3.2のソースをダウンロードする。
  • OpenCV3.2のcontribのソースをダウンロードする。
  • Cmakeを使って自分の環境にあったOpenCVのソースを作る。
  • Visual Studioを使ってソースをビルドする。
  • ビルドしてできたDLLのパスを通して、ヘッダーとライブラリをVisual Studioで指定する。
  • サンプルプログラムをビルドする。



Visual Studio Community 2015をインストールする。

Visual Studioの公式サイトからインストーラをダウンロードして、インストールします。
インストールの方法は特に変わったことはありません。インストーラに従ってインストールしてください。


Cmakeをインストールする。

公式サイトから自分環境にあったzipをダウンロードします。
これは特にインストールとか必要なく、解凍するだけでOKです。


OpenCV3.2のソースをダウンロードする。

OpenCVの公式サイトから3.2のWindow版をダウンロードします。
OpenCVGitHubからダウンロードしても同じだと思っていたのですが、うまくいかなかったので公式サイトからダウンロードしましょう。
ダウンロードしたら解凍して、適当な場所に置きます。置く場所はどこでもいいです。(多分)
今回はCドライブの直下に置いてフォルダ名をopencv320に変えておきます。


OpenCV3.2のcontribのソースをダウンロードする。

contribのソースはGitHubからダウンロードします。

ここのサイトから

opencv_contrib → release → 3.2.0と飛んで、

Source code (zip)をクリックしてダウンロードします。
ダウンロードしたら解凍して、適当な場所に置きます。置く場所はどこでもいいです。(多分)
今回はCドライブの直下に置いてフォルダ名をopencv_contrib320に変えておきます。


Cmakeを使って自分の環境にあったOpenCVのソースを作る。

Cmakeを解凍したフォルダの中のbinフォルダのcmake-gui.exeを実行します。
そしたら、Where is the source code:の欄にダウンロードしたOpenCVのソースを指定します。
今回は

C:/opencv320/sources

となります。
その下の欄のWhere to build the binaries:には

C:/opencv320/build

と入力します。これはビルドされるバイナリが保存される場所になります。
その後、Configureをクリックします。
コンパイラ環境を聞かれると思うのでVisual Studio 2015を選びます。86と付いているのは32bit版で何もついてないのは64bit版です。
すると、赤くずらずらと出てきます。
これはどういう風にOpenCVをインストールするかといったオプションです。(多分)
まず、Pythonは入っていないのでPython関係のチェックを外します。
NvidiaGPUも積んでないのでWITH_CUDAのチェックを外します。
それと何故かBUILD_opencv_hdfにチェックが入っているとビルドで失敗するのでチェックを外す。
contribのフォルダを指定します。OPENCV_EXTRA_MODULES_PATHに以下を指定します。

C:/opencv_contrib320/modules

そしたら再びConfigureを押します。
その後Generateをクリックします。
すると、自分の環境にあったソースのソリューションファイルが生成されます。


Visual Studioを使ってソースをビルドする。

CmakeのOpen Projectボタンを押すか、もしくはC:/opencv320/buildの中に生成されているOpenCV.slnをVisual Studioで開きます。
メニューバーのビルドを押してバッチビルドを選択します。そしたら、INSTALLをDebugとReleaseのどちらもチェックしてビルドボタンを押す。
ビルドが終わるのをしばらく待ってエラーなく終了したら成功です。


ビルドしてできたDLLのパスを通して、ヘッダーとライブラリをVisual Studioで指定する。

ビルドして生成されたもので本当に必要なのは3種類です。(多分)
『ヘッダファイル』(拡張子.hpp)と『ライブラリファイル』(拡張子.lib)と『ダイナミックリンクライブラリ』(拡張子.dll)の3つです。
それ以外のファイルはダウンロードしたものを含めて全て削除しても多分大丈夫です。(サンプルプログラムとかサンプルコードは別として)
ヘッダファイルはOpenCVに使われている関数とかの定義が書いてあるファイル。(多分)
ライブラリファイルは関数とかの内容が書かれているファイル。(多分)
ダイナミックリンクライブラリはOpenCVでビルドされたプログラムを実行するときに一緒に実行されるファイル。(多分)
つまり、ビルド時にはヘッダファイルとライブラリファイルが必要で、実行時にはダイナミックリンクライブラリが必要になります。(多分)
この3つのファイルをうまく配置指定してやる必要があります。

ダイナミックリンクライブラリのパスを通す。

ダイナミックリンクライブラリはC:/opencv320/build/install/binの中に有ります。プログラムを実行するのはWindowsなのでこのフォルダをWindowsに教えてやる必要があります。
Windowsのスタートボタンを右クリックしてシステムを選択します。
左の欄のシステムの詳細設定をクリック。詳細設定のタブの一番下の環境変数をクリック。
システムの環境変数の中のPathを選択して編集を押します。
新規を押して、

C:/opencv320/build/install/bin

と入力してOK。パソコンを再起動します。

もう一つの方法として、C:/opencv320/build/install/binの中にある.dllのファイルを
64bitでビルドしたならC:\Windows\System32に
32bitでビルドしたならC:\Windows\SysWOW64に
コピーしても良いようです。

ヘッダファイルの指定

ヘッダファイルはC:/opencv320/build/install/includeの中に有ります。プログラムをビルドするのはVisual StudioなのでこのフォルダをVisual Studioに教えてやる必要があります。
まずVisual Studioで適当なプロジェクトを作成します。
ファイル → 新規作成 → プロジェクト
Visual C++で空のプロジェクトを選んで名前を適当付けます。今回はopencv-testとします。
そしたらソリューションエクスプローラーの欄でopencv-testを右クリックしてプロパティを選択します。
構成ですべての構成を選んでC/C++を選択します。追加のインクルードディレクトリに以下を追加します。

C:/opencv320/build/install/include

ライブラリファイルの指定

ヘッダファイルはC:/opencv320/build/install/libの中に有ります。プログラムをビルドするのはVisual StudioなのでこのフォルダをVisual Studioに教えてやる必要があります。
ライブラリファイルの指定はコード上に書いて指定することができます。
面倒なので全てのライブラリを指定します。
コードの一番上に以下のように記述します。

#ifdef _DEBUG
//Debugモードの場合
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_aruco320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_bgsegm320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_calib3d320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_ccalib320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_core320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_datasets320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_dnn320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_dpm320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_face320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_features2d320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_flann320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_fuzzy320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_highgui320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_imgcodecs320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_imgproc320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_line_descriptor320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_ml320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_objdetect320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_optflow320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_photo320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_plot320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_reg320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_rgbd320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_saliency320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_shape320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_stereo320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_stitching320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_structured_light320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_superres320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_surface_matching320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_text320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_tracking320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_video320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_videoio320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_videostab320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_xfeatures2d320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_ximgproc320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_xobjdetect320d.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_xphoto320d.lib") // opencv_core
#else											  
//Releaseモードの場合								
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_aruco320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_bgsegm320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_calib3d320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_ccalib320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_core320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_datasets320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_dnn320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_dpm320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_face320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_features2d320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_flann320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_fuzzy320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_highgui320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_imgcodecs320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_imgproc320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_line_descriptor320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_ml320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_objdetect320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_optflow320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_photo320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_plot320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_reg320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_rgbd320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_saliency320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_shape320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_stereo320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_stitching320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_structured_light320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_superres320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_surface_matching320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_text320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_tracking320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_video320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_videoio320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_videostab320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_xfeatures2d320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_ximgproc320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_xobjdetect320.lib")
#pragma comment(lib,"C:\\opencv320\\build\\install\\x86\\vc14\\lib\\opencv_xphoto320.lib")
#endif


もしくは、もう一つの方法としてヘッダファイルの時と同じように、プロパティを開きリンカーの追加のライブラリディレクトリに

C:/opencv320/build/install/x86/vc14/lib

を追加します。
次にリンカーの入力の追加の依存ファイルにlibフォルダの中身を追加します。構成のDebugかReleaseかによって追加するファイルを分けてください。
opencv_xxxd.libはDebugに、opencv_xxx.libはReleaseといった感じに追加してください。

サンプルプログラムをビルドする。

ここまできたらOpenCVを使えるはずです。
適当なサンプルコードを貼っつけてビルドできたら成功です。
サンプルコードは↓