前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Processingを用いて、画像の中の1ピクセル中の色を抽出して、抽出したR値から
matchRows()を用いて先に格納していたCSVファイルの中から該当した名前を引っ張ってこようとしてるのですがうまく来ません。もしかして、と思いCSVファイル自体読み込めてないのかと思ったのですがif文を用いてprintlnで表示させた時に読み込みはできていました。ソースコードで何が間違えているか教えていただけると助かります。
発生している問題・エラーメッセージ
ソースコードの中にあるピクセル内のRGB値の判定からCSVファイルを照会した際に反応してくれない
該当のソースコード
Processing
1import de.bezier.data.*; 2import processing.video.*; 3PImage img; 4Capture capImg; 5Table tbl = null; 6String fileName = "color.csv"; 7 8 9void setup() { 10 size(640,480); 11 String[] cameras =Capture.list(); 12 13 if (cameras.length == 0) { 14 println("No Cameras"); 15 exit(); 16 17 } 18 19 else { 20 capImg = new Capture(this, cameras[18]); 21 capImg.start(); 22 } 23} 24void draw(){ 25 if (capImg.available()==true){ 26 capImg.read(); 27 image(capImg, 0, 0); 28 29 30} 31} 32 33 void keyPressed(){ 34 switch (key) { 35 case 'i': 36 println("Iキーが押されました。動画を開始させます。"); 37 capImg.start(); 38 break; 39 40 case 'p': 41 println("Pキーが押されました。動画をストップさせます。"); 42 capImg.stop(); 43 break; 44 45 case 's': 46 println("Sキーが押されました。1フレーム分が保存されます。"); 47 saveFrame("capture.png"); 48 break; 49 50 } 51 } 52//クリックしたピクセルのRGB値を表示する。 53 void mousePressed() { 54 img = loadImage("capture.png"); 55 int idx = mouseX + mouseY * img.width; 56 color c = img.pixels[idx]; 57 println( "r = " + red( c ) + ", g = " + green( c ) + 58 ", b = " + blue( c ) ); 59//CSVに格納した色データを読み込む。 60 tbl = loadTable( fileName, "header" ); 61 if( tbl != null){ 62 try{ 63 for(TableRow row : tbl.findRows(" red( c ) ",1)){ 64 String name = row.getString(0); 65 println("色の名前は["+ name +"]です"); 66 } 67 } catch( Exception e ){ 68 69 println("列取り出し異常:" + e.getMessage() ); 70 } 71 } 72 noLoop(); 73 74}
試したこと
floatに置き換えて、matchRows("red( c )",1)のところにred( c )に変数を代入してみたがうまくいきませんでした。
CSVファイルの方はhttp://mslabo.sakura.ne.jp/WordPress/make/processing%E3%80%80逆引きリファレンス/csvデータを取り出すには/
こちらのサイトのコードを使ってみて動作したので大丈夫だと思います。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/28 06:51
2019/01/28 07:17
2019/01/28 14:29
2019/01/29 01:40