2016年11月16日水曜日

Re:ゼロから始める開発者生活④

今回はちょっとめんどくさいかもしれませんがあとちょっとなので頑張って行きましょう‼

今回やることは

③「opencv_world310d.dll」を配置したり「opencv_lib.hpp」を作ったりする。


ちょっと説明します。

・opencv_lib.hppについて


この方法を試す前にNuGetで導入を試みた方なら分かってもらえると思いますが、NuGetで導入成功と表示されても実際にソースコードを書くとエラーを返されます(注:2016年11月1日現在)。

なぜか?ソースコードでインクルードする「opencv_lib.hpp」が存在しないからです。
これは各ファイルの場所が書いてあるらしいファイルで、前のバージョンでも自作する必要があったみたいです。
試しに2.4.4用のテンプレートを244→310にして突っ込んでみましたがエラーorz
いろいろ探した結果、見つかりました。

「3.1から場所を表すファイルはworldファイルにまとまったからworldファイルの場所を書くだけでいい」

ということらしいです。

・opencv_world310d.dllについて


これは正しいやり方では「パスを通す」のが一般的みたいですが管理者権限がないので基本に立ち返り(?)「プロジェクトごとにsourceファイルと同じフォルダにopencv_world310d.dllを突っ込む」という方法でやりましょう。
ちなみに310の後についている「d」は「デバッグ用」を表す「d」ですので、リリース用の環境を作るときは「d」のついていない方に入れ替えてください。


では実際の作業に移ります。

まずVS 2015を起動して好きな場所に空のプロジェクトを作成します。
場所はデフォルトだと「ドキュメント」フォルダになっていると思います。
これは共有フォルダなどに変更しても大丈夫です。ファイルがいじれる場所にしてください。
ちなみにUSBメモリに環境を作ろうとしたら失敗しました。たぶんできる方法があるんだとは思いますが、この方法では無理でした。(絶対パスだからなんでしょうか…。)

最初にでるウィンドウでは空のプロジェクトにチェックを入れて完了を押してください。
「ソースフォルダ」を右クリックして「新しい項目」から「ソースファイル」を作成してください。
これで空のプロジェクトに空のソースファイルが入っている状態になりました。
ここからする作業は下の3つです。

Ⅰ.プロジェクトプロパティを設定する


プロジェクトを右クリック→プロパティ
→C/C++→追加のインクルード ディレクトリ→編集
と選択していくとウィンドウが開きます。
矢印のボタンをクリックしてビルドしたOpenCVのフォルダのbuild→install→includeと開いていってincludeフォルダを指定してください。表示されるパスが ~\includeとなっていますか?

次にライブラリディレクトリを追加します。
プロパティウィンドウの左側の「リンカ」をクリックし、「追加のライブラリディレクトリ」を開いて「編集」をクリックします。
上と同じようなウィンドウが開きます。
矢印のボタンを押してbuild→install→×86→vc14→lib と選択していきます。
パスの最後が上の写真のようになっていることを確認してください。

次に「リンカ」をダブルクリックしてタブを開きます。
その中の「入力」をクリックしてください。
赤の矢印のところを開いて上の二つと同じく編集をクリックしてください。
上の写真のようなウィンドウが出ると思います。
この入力はウィンドウではなくファイルのパスを直接入力します。
上で指定した「lib」フォルダの中の「opencv_world310d.lib」のパスを黄色の矢印のスペースに貼り付けてください。
写真と同じ状態になったことを確認してください(310の後にdが付くので間違えないように)。
すべて終わったらOKを押してウィンドウを閉じてください。VS 2015も閉じても構いません。


Ⅱ.opencv_lib.hppを作成する


メモ帳を開き、下の内容を入力して保存してください。
#if _DEBUG
#pragma comment(lib, "opencv_world310d.lib")
#else
#pragma comment(lib, "opencv_world310.lib")
#endif
ファイル名を「opencv_lib.hpp」に変更して保存します。「拡張子を変更すると~」という警告がでるかもしれませんが無視して変更してください。

こうなります(Windows7での表示です、若干異なるかもしれません)。
opencv→build→install→include→opencv2に移動させてください。


Ⅲ.opencv_world310.dllをコピペする


このファイルはopencvを使ったソフトが動くたびに読み込まれます。
build→install→×86→vc14→binに入っているopencv_world310d.dllをコピーして


ソースファイル(Sourse.cpp)が入っているフォルダに貼り付けてください。

ポイッと。



これで環境構築は終了です。

きちんと動作するかテストします。ソースファイル(Sourse.hpp)と同じフォルダに test.jpg と名前を変更したJPEGファイルを入れてください。これを表示してみます。
サンプルコードをソースファイルに入力してデバッグボタンを押して起動してみましょう。


サンプルコード


#include <opencv2/opencv.hpp>
#include <opencv2/opencv_lib.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <windows.h>

int main(void)
{
char path[] = "test.jpg";
cv::Mat src_img;
cv::namedWindow("Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
while (1) {
src_img = cv::imread(path, 1);
if (src_img.empty()) return -1;
cv::imshow("Image", src_img);
cv::waitKey(1);
if (GetKeyState(VK_LSHIFT)<0) { return 0;}
}

}

きちんと動作すれば成功です。

これで開発を始める準備が終わりました。

ここからは楽しいですよ~!!
間違っていてもなにが間違っているのかVSが教えてくれますから(笑)
私も環境構築が終わった日は一日中ニコニコしながらコード書きまくってました。

私の顧問いわく、
「環境構築が一人でできるようになって初めて本当の開発者を目指せる(低音)。」
だそうです。

お疲れ様でした。
別シリーズで実際の開発も報告していきます。

2016年10月29日土曜日

Re:ゼロから始める開発者生活③

今回は前回準備をしたOpenCVをVSでビルドしていきます。

②VSでOpenCVを「ビルド」する。

今回は英語もパスもほとんど出てこないので安心して取り組んでください(笑)

まず、前回準備をしたOpenCVのフォルダの「build」フォルダの中からOpenCV.slnというファイルを見つけてください(めんどくさい方は検索かけてみてください)。見つけたらダブルクリックで起動してください。VSが正しくインストールされていればVSが起動するはずです。
読み込みに時間がかかるので左下に準備完了と表示されるまで待ちましょう。

OpenCVを「ビルド」していきます。

まず上の方にある「ビルド(B)」をクリックします。
開いた選択肢から「バッチビルド(T)...」をクリック。
ビルドする対象を選ぶウィンドウが開きます。

「INSTALL」というプロジェクトの「Debug」「Release」の二つのチェックボックスにチェックを入れます。
「ビルド」ボタンを押します。「出力」というツールボックスに文字列が表示されていくと思います。

ここからかなり時間がかかります(私は20分以上かかりました)。
気長に休憩して待ちましょう。

表示が止まって「ビルド: 2 正常終了、0 失敗、0 更新不要、0 スキップ」という表示が「出力」ツールボックスに表示されていれば成功です。違う表示の場合はどこかに間違いがあるか仕様が変わったかなのでもう一度やり直したり情報を集めたりしてみてください。

これで「ビルド」の作業は終わりです。次回はちょっとわかりにくい内容になるかもしれませんが楽しい画像処理ライフのためにがんばりましょう!!

2016年10月27日木曜日

Re:ゼロから始める開発者生活②

さて、始める前に前回書き忘れた私の環境について書いておきます。

学校のパソコン

・Windows8.1
・64bit
・VS 2015 64bit
・ローカルディスク使用不可、管理者権限なし

自宅のパソコン

・Windows7
・64bit
・VS 2015 64bit
・ローカルディスク・Cドライブ使用可、管理者権限あり

ここからの作業に当たって、いくつか注意事項があります。
まず、うまく行かないときはもう一度繰り返してみたり、再起動してからやってみましょう。
時間がかかる処理も多いので表示が変わらないからといってソフトを消したり、中断しないようにしましょう。作業によっては20分近くかかることもあります。
私は超初心者なので質問が来ても自分の環境についてくらいしか答えられないと思います。過度な期待はしないでくださいね。


前置きが長くなりました。作業を初めましょう。
下記の作業が全行程になります。

①CmakeでOpenCVを「ビルド」する下準備をする。
②VSでOpenCVを「ビルド」する。
③「opencv_world310d.dll」を配置したり「opencv_lib.hpp」を作ったりする。
④VSでファイルパスを設定する。



わざわざファイル名を書いたのはその場所でつまずいている方が検索したときに見つけてもらうためです。意味はあとで説明します。

今日やる作業は

①CmakeでOpenCVを「ビルド」する下準備をする。

です。

まず展開したCmakeを起動してください。binの中のcmake-gui.exeです。

「Where is source code:」の右の欄に ~/opencv/sources となるようにOpenCVを展開したフォルダフォルダの中のsourceフォルダを指定します。
同様に「Where to build the binaries:」の右の欄に ~/opencv/build となるようにsourceフォルダと同じ場所に入っているbuildフォルダを指定します。

指定が終わったら「Configure」ボタンを押します。
VSのバージョンを聞かれるので「Vidual Studio 14 2015」を選んでください。
下のチェックボックスはデフォルトのまま「Use default compilers」です。
私の環境では64bitで失敗したので無印(32bit版)が無難かと思います。

5~20分ほど待つとチェックボックスが並んだ赤い画面に代わります。
ここでビルドするときのオプションを選びます。
「BUILD_opencv_world」にチェックを入れてください。

「Generate」ボタンを押します。
しばらくして「success」とか「finish」みたいな文が出てきたら成功です。
「failed」みたいな文が出てきたら失敗なのでもう一度やり直したりしてみてください。

これでビルドの準備は完了です。OpenCVのフォルダにたくさんフォルダやファイルが増えていると思います。

次回はVSでOpenCVを「ビルド」します。

2016年10月26日水曜日

Re:ゼロから始める開発者生活①

いつもは銃がどーたら、ボルトがどーたら言ってますが、実は私の部活は情報系です。

このシリーズは、部活のプロジェクトで取り組むことになった画像処理について、同じ初心者の方とときにともに悩み、ときに発見を共有するために始めました。
ですので、もちろん同じ初心者の方は質問や議題を、経験者の方はアドバイスや指摘をコメントしていただけると嬉しいです。

本題に入りましょう。
今回使うのは画像処理といえばこれしかないというくらいの大定番にして大本命、

OpenCV3.1

です。
開発環境はこちらも定番

Visual Studio 2015

です。が、しかしどちらも最新版ということもあり、最初から大きくズッコケました(笑)。
そういうわけでタイトル通り、「ゼロから」解説していきます。また、学校で取り組む方(私を含め)のためになるべく管理者権限、ローカルディスクを使わない方法を目指したいと思います。
このブログが画像処理に取り組まんとする同志の皆さんのささやかな助力になれば幸いです。


まずは環境構築に必要なものをそろえていきましょう。

さしあたって開発を始めるのに必要だったのは
・Visual Studio 2015
・OpenCV3.1
・Cmake
の三つです。
Visual Studio 2015(以下VS)は日本語化しておきましょう。(日本語化もバグ?みたいなのがありましたが日本語化するファイルを何回かダウンロードすると直ったりします)
OpenCV3.1は公式サイトからインストーラをダウンロードして適当なフォルダに展開しておきましょう。
Cmakeも同様にインストーラからインストールしておきます。

長くなってしまったので今回はここで一旦休憩です。
ここまででつまずいた方はダウンロードしなおしたり、ほかのサイトから情報を見つけてみてください。

次回に続きます。

2016年10月16日日曜日

RSS実験機「Aries」製作記⑤

新兵器導入!!

ちょっと臨時収入があったので、ホームセンターで気になっていた工具を買ってしまいました。
それがこちら。
なんとこれ、電動ドライバーに取り付けて使うやすりなんです。
木材はもちろん樹脂、軽金属まで対応。¥1200くらいです。
今回はこれを使って加工していきます。
あとトリガーガードになりそうな金具を買ってきました。ドアノブ(?)だったはずです。



まずは前回からの改良です。
片方にしかバネが入っていなかったせいで撃つたびに調整が必要だった機関部ですが・・・、
これをこうして・・・

こうなりました。
これで引っ掛けるだけで再装填できます。

ではメインの加工行きます。
ストックを作っていきます。
前の投稿にあげた型紙をもとに
切り出して、
角を削り、

フレームの溝に合わせて加工します(下手だけどどうせ見えないからこれでOK)。

電動やすり、ものすごく便利です。ものすごく。

10分ほどで削り終わりました。サクサク削れて楽しいです。すごく楽です。
グラインダ等を持っていない人に自信を持ってお勧めできます。

このあとより細かいやすりをかけます(フレームとかその他やすり掛け予定の部品がたまっていく・・・)。


実はもう玉受けの試作品は出来上がっていて、一応撃てる状態にはなっていますがあまりきれいなものではないので、きちんとしたものが出来上がったら投稿します。
残りの作業は
・フレームとストックの接合
・玉受け制作
・やすり掛け
・フレーム調整
・トリガーガード取り付け
・機関部取付
・スコープやらなにやら調達
・塗装
といった感じです。

最後に今回の成果です。

2016年9月29日木曜日

RSS実験機「Aries」製作記④

レール・フレーム完成


テストがあったり部活があったりでなかなかドリル使えなかったのですが、やっと完成しました。




今回レールに使ったのはアルミ製12㎜×12㎜×1000㎜コの字型レールを半分に切ったものです。
見てわかるとおりフレームを貫く長いボルトにゴムを固定します。




アルミは加工もしやすいし、錆びない、軽量、見た目がいいなどの理由で趣味の工作にはもってこいです。トリガーにも使ってますね。やすりで削れるってのは大事です。




RSSの先駆者の方々の間で一般的なM字レール、直角レールを使わなかったのは理由があります。

田舎過ぎてホームセンターで売ってない。


これが理由です(笑)。田舎暮らしはこういうところが辛いです(農機具コーナーはやたらとでかい)。
あとパチンコ玉も手に入りそうにないので、ナットを撃つために幅が必要だったということもあります。




そして完成して分かったのですがとにかく重いです。
フレームだけで1.6㎏あります。この後ボルトやらストックやらスコープやらが乗ります。持ち運べる重さになるんでしょうか・・・。



今後はやすりをかけたり、ストックを作ったり、玉受けを作ったり、穴をあけたり、塗装したり、といった作業になります。
とりあえずストックと玉受けを作って撃てる状態にしたいです。
この時期大会やら何やらが集中しますので更新遅れると思います。

次回は玉受けになるかと思います。

2016年9月14日水曜日

RSS実験機「Aries」製作記③

機関部完成

夏風邪で死にそうになりながらもひたすらアルミをゴリゴリ、バルサをガリガリやって完成しました!!


いつもは「動けばいい」と割り切ってやってますが、今回はちょっと丁寧に作ったので動作は確実、強度も必要十分です。



特徴は下の図のように表面に出っ張りがないことです。
これによって一般的な14㎜厚の木材と挟むことで簡単にトリガーがつけられます。

 今回はこんな感じで、間の木材の上にレールが入ります。
後で穴もあけてボルトで固定します。

フレーム用の木材も買ってきました。
14㎜厚90×1820の材を無料カットサービスで45×720にカットしてもらいました。
カットサービス最高ですね!!
「縦はやったことないんだよな~。」と試行錯誤してくれたホムセンのおじさん、ありがとう。
1㎜のズレもなく半分になってます。しかも断面はヤスリいらず。みなさん、カットサービスはドンドン活用しましょう。材が大きいほど安く上がります。

まあ、そんなところで次回はいよいよメインフレームに入るかと思います。
最近仕事がたまってるのでたぶん更新遅れます。