ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

2016年1月5日火曜日

CSVファイルからデータの読込

メモ。
csvファイル( , カンマ区切り、改行あり)からデータを読み込む。
ついでにopencvのMatにデータをぶち込む。


"filename1.csv", "filename2.csv", .... , みたいな感じの連続番号を振ったCSVファイルをループ文で読み込む

while(1){
 read_csv(i);
 ++i;
}
みたいな感じ。







int read_csv(int counter) //ループのカウンター値を受け取る→連続したファイルを読み込む
{

 //ファイル名の指定
 char name[256];
 sprintf_s(name, 256, "ファイル名%d.csv", counter); //連続番号付けしたファイルを読み込む

 std::ifstream read_data(name);


 //エラー処理
 if (!read_data) {
  std::cout << "Error:Input data file not found" << std::endl;
  return -1;
 }

 double *data = new double[height*width](); //0で初期化
 //heightとwidthは定数、ここでは定義は省略している

 int i = 0;
 
 std::string str;
 while (getline(read_data, str)){
  
  string token;
  stringstream ss;
  istringstream stream(str);

  while (getline(stream, token, ',')) { // 区切り文字は ,カンマ

   // 文字列から数値に変換
   ss << token;
   ss >> data[i];
   
   ++i;

   ss.clear(); // 状態をクリア.
   ss.str(""); // 文字列をクリア.
  }
 }


 cv::Mat mat_data(height, width, CV_64FC1, data); //csvから読み込んだデータをcv::Matにぶち込む

 
 return 0;
}




インクルードするのはたしかこれら
#include <fstream>
#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>

参考:
http://fa11enprince.hatenablog.com/entry/2014/04/03/233500
http://99blues.dyndns.org/blog/2010/02/std_stringstream/
http://ppp-lab.sakura.ne.jp/cpp/library/032.html
http://handasse.blogspot.com/2007/06/c_22.html




2014年9月16日火曜日

Leap Motion プログラミング

Leap Motionの本がいつの間にか出てた。





デバイス自体は既に手元にあったのだけれど、SDKのサンプルだけ触って放置してた^^;

んで本が出たということで、早速注文した。

これからいろいろ遊んでみようと思う。

OpenNIでも動かせるらしいけど既に開発終了、閉鎖しているのでどうなんだろうか・・・。



2014年4月14日月曜日

OpenCV2.4.8インストール

忘備録。



Kinectを使うにあたりOpenCV2.4.8のインストールを行った。


基本的にはyoutubeにあがっていた動画↓通りに進めていく。





■環境
Windows7 Home Premium 64bit
Visual Studio 2013 for Windows Desktop


■1. OpenCV2.4.8をダウンロード。


■2. 任意のフォルダに展開。

今回はCドライブ下にフォルダを予め作成

C:\opencv

ここに解凍した。



展開後、C:\opencv\opnecvとなるので、今後の事も考え名前を変更

C:\opencv\248

とした。


■3. 環境変数の設定

「スタート」→「コンピュータ」を右クリック→「プロパティ」→「システムの詳細設定」→「環境変数」

「Path」を編集

末尾に

;C:\opencv\248\build\x86\vc12\bin

を追加。

※「;」を忘れず。


■4. Visual Studio 2013

□新しいプロジェクト


「新しいプロジェクト」→「Win32 コンソールアプリケーション Visual C++」

名前は適当につけて「OK」を。

何か小窓が出てくるので「次へ」→「空のプロジェクト」にチェックを入れる→「完了」



□プロパティシートの追加


上のメニューバーで「表示」→「その他のウィンドウ」→「プロパティ マネージャ」

「Debug | Win32」に「新しいプロジェクト プロパティシートの追加」→名前は適当に→「プロパティ」


「共通プロパティ」→「VC++ディレクトリ」

「実行可能ファイルディレクトリ」に

C:\opencv\248\build\x86\vc12\bin

を追加。

「ライブラリディレクトリ」に

C:\opencv\248\build\x86\vc12\lib

を追加。



次に「C/C++」→「全般」

「追加のインクルードディレクトリ」に

C:\opencv\248\build\include

を追加。


次に「リンカー」→「全般」

「追加のライブラリディレクトリ」に

C:\opencv\248\build\x86\vc12\lib

を追加。

「入力」

「追加の依存ファイル」に

opencv_calib3d248d.lib
opencv_contrib248d.lib
opencv_core248d.lib
opencv_features2d248d.lib
opencv_flann248d.lib
opencv_gpu248d.lib
opencv_highgui248d.lib
opencv_imgproc248d.lib
opencv_legacy248d.lib
opencv_ml248d.lib
opencv_nonfree248d.lib
opencv_objdetect248d.lib
opencv_ocl248d.lib
opencv_photo248d.lib
opencv_stitching248d.lib
opencv_superres248d.lib
opencv_ts248d.lib
opencv_video248d.lib
opencv_videostab248d.lib

※C:\opencv\248\build\x86\vc12\libに入っているもの。「*d.lib」となっているファイル。

Release版は d がついてない方?

を追加。

「適用」→「OK」で終了。

■Sampleの実行

ソースファイルに任意のSampleファイル追加し、ビルドして実行。

C:\opencv\248\sources\samples\cpp

にある。

動画ではdrawing.cpp


※失敗するときはWindows SDK 7.1かなにかでなんやかんやすれば怒られないらしい。


以上。





2013年11月11日月曜日

MATLAB【備忘録】追記中

MATLABとは

技術計算に特化した高性能プログラミング言語.

行列の処理が直感的.

変数宣言しなくていい.



【コマンドウィンドウ】

変数

C言語などのようなデータ型の宣言をしなくてよい.

------------

>> a = 1

a =

      1

------------


大文字と小文字を区別する.

------------

>> A = a

A =

      1

------------

------------
>> a = 1, b = 2, A = a + b

a =
     1

b =
     2

A =
     3

------------


コマンド記述中の改行は「...」ピリオド3つを入力.

------------
>> a = 1 + 3 ...
+ 5 + 2

a =
     11

------------




2013年6月8日土曜日

プログラミングの心得

何かの本で見たのだけれど・・・


プログラマはただ自由自在にコードが書けるだけではいけないそうです。


今のところプログラムは多くは人間が書いていますが、人間が書く以上クセや個性、間違いなどがあります。


自分で分かるコードが書けても、他人がそれを読めなければ意味がありません。

 逆に、他人が書いたコードは難解であっても読みとかなければなりません。


つまり自分のコードは美しくわかりやすく、他人のコードは何でもこい!というのが望ましいそうです。


また、自分のコードを美しくかつわかりやすく(見やすく)書く理由はもう1つあります。


自分が書いたコードは3日経てば他人のコードになる。


自分のコードを100%覚えれる人間はごく稀(短いものは除いて)で、自分でも分からなくなるからきれいに書けってことだそうです。



あと、優秀なプログラマは仕様書がなくとも書ける。


仕様書がなければ何もできないプログラマは二流以下だそうです。




僕はまだ始めたばかりの初心者だけど、なんかこの考えに納得できたのでこれを信条にしていこうと思います。