質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

1535閲覧

mOutputFrameのパスを教えてくださいm(_ _)m

tomoe

総合スコア12

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2016/11/07 02:08

編集2016/11/09 17:25

###前提・実現したいこと
画面タッチ時に二値化のプレビューを表示してテンプレートマッチングしたいと思っています。mOutputFrame(inputFrame?)のパスがわからずMatchingDemoクラスに渡せません。パスがどうなってるか教えてくださいm(__)m

また以下のコードでテンプレートマッチングが行えるでしょうか?

###該当のソースコード
MainActivity.java

java

1public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { 2 3 MatchingDemo MDemo; 4 5 private static String TAG = "MainActivity"; 6 JavaCameraView javacameraview; 7 Mat mOutputFrame;//出力画像 8 Mat mOutputFrame2;//画像保持用 9 Mat mOutputFrame3;//画像保持用 10 Mat mat; 11 Bitmap tempbitmap; 12 int touId = 0;//フラグ変数 13 Bitmap src;//テンプレート画像の読み込み(jpg) 14 private Camera camera; 15 16 BaseLoaderCallback mLoaderCallBack = new BaseLoaderCallback(this) { 17 18 @Override 19 public void onManagerConnected(int status) { 20 switch (status) { 21 //読み込み完了したらカメラビューを開始する 22 case BaseLoaderCallback.SUCCESS: { 23 javacameraview.enableView(); 24 break; 25 } 26 default: { 27 super.onManagerConnected(status); 28 break; 29 } 30 } 31 32 } 33 }; 34 35 //OpenCVが読込できてるかログ確認用 36 static { 37 if (OpenCVLoader.initDebug()) { 38 Log.i(TAG, "Opencv loaded successfully"); 39 } else { 40 Log.i(TAG, "OpenCV not loaded"); 41 } 42 } 43 44 @Override 45 protected void onCreate(Bundle savedInstanceState) { 46 super.onCreate(savedInstanceState); 47 setContentView(R.layout.activity_main); 48 javacameraview = (JavaCameraView) findViewById(R.id.java_camera_view); 49 javacameraview.setVisibility(SurfaceView.VISIBLE); 50 javacameraview.setCvCameraViewListener(this); 51 tempbitmap = BitmapFactory.decodeResource( getResources(),R.drawable.test2); 52 } 53 54 @Override 55 protected void onPause() { 56 super.onPause(); 57 if (javacameraview != null) 58 javacameraview.disableView(); 59 } 60 61 @Override 62 protected void onDestroy() { 63 super.onDestroy(); 64 if (javacameraview != null) 65 javacameraview.disableView(); 66 } 67 68 @Override 69 protected void onResume() { 70 super.onResume(); 71 if (OpenCVLoader.initDebug()) { 72 Log.i(TAG, "Opencv loaded successfully"); 73 mLoaderCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS); 74 75 } else { 76 Log.i(TAG, "OpenCV not loaded"); 77 //OpenCVLibraryの読み込み 78 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_11, this, mLoaderCallBack); 79 } 80 /*Resources res = getResources(); 81 src = BitmapFactory.decodeResource(res, R.drawable.test2);//テンプレート画像の読み込み 82 mat = new Mat(new Size(85, 85), CvType.CV_8UC4); 83 Utils.bitmapToMat(src, mat); */ 84 } 85 86 87 88 @Override 89 public void onCameraViewStarted(int width, int height) { 90 mOutputFrame = new Mat(height, width, CvType.CV_8UC1); 91 } 92 93 @Override 94 public void onCameraViewStopped() { 95 mOutputFrame.release(); 96 } 97 98 @Override 99 public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame ) { 100 switch (touId) { 101 case 0: 102 mOutputFrame = inputFrame.rgba(); 103 Log.d("OutputFrame","0 "+mOutputFrame); 104 break; 105 case 1: 106 /* mOutputFrame3 = */Imgproc.threshold(inputFrame.gray(), mOutputFrame, 127.0, 255.0, Imgproc.THRESH_BINARY);//二値化 107 mOutputFrame2 = mOutputFrame; 108 Log.d("OutputFrame","1 "+mOutputFrame); 109 Log.d("OutputFrame2","2 "+mOutputFrame2); 110// Log.d("OutputFrame2","2 "+mat.data); 111 112 //moutputframeのところにファイルパスを入れる? 113 String args[] = {mOutputFrame,"../res/drawable/test2.bmp","../res/drawable/outfile/output.txt"}; 114 TemplateMatching.main(args); 115 116 117// run(mOutputFrame.dataAddr(), tempbitmap,Imgproc.TM_CCOEFF); 118 touId = 2; 119 break; 120 case 2: 121 122 mOutputFrame = mOutputFrame2; 123 break; 124 125} 126return mOutputFrame; 127 } 128 129 //追加分 130 @Override 131 public boolean onTouchEvent(MotionEvent ev) { 132 switch (ev.getAction()) { 133 case MotionEvent.ACTION_DOWN: 134 //画面がタッチされたときの動作 135 if (touId == 0) { 136 touId = 1; 137 } else if (touId == 2) { 138 touId = 0; 139 } 140 break; 141 case MotionEvent.ACTION_CANCEL: 142 //他の要因によってタッチがキャンセルされたときの動作 143 break; 144 } 145 return super.onTouchEvent(ev); 146 } 147} 148

MatchingDemo.java

public class MatchingDemo { public void run(String inFile, String templateFile, String outFile, int match_method) { System.out.println("\nRunning Template Matching"); Mat img = Highgui.imread(inFile); Mat templ = Highgui.imread(templateFile); // / Create the result matrix int result_cols = img.cols() - templ.cols() + 1; int result_rows = img.rows() - templ.rows() + 1; Mat result = new Mat(result_rows, result_cols, CvType.CV_32FC1); // / Do the Matching and Normalize Imgproc.matchTemplate(img, templ, result, match_method); Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat()); // / Localizing the best match with minMaxLoc Core.MinMaxLocResult mmr = Core.minMaxLoc(result); Point matchLoc; if (match_method == Imgproc.TM_SQDIFF || match_method == Imgproc.TM_SQDIFF_NORMED) { matchLoc = mmr.minLoc; } else { matchLoc = mmr.maxLoc; } // / Show me what you got Core.rectangle(img, matchLoc, new Point(matchLoc.x + templ.cols(), matchLoc.y + templ.rows()), new Scalar(0, 255, 0)); // Save the visualized detection. System.out.println("Writing "+ outFile); Highgui.imwrite(outFile, img); } }

TemplateMatching.java

public class TemplateMatching { public static void main(String[] args) { System.loadLibrary("opencv_java2411"); new MatchingDemo().run(args[0], args[1], args[2], Imgproc.TM_CCOEFF); } }

###補足情報(言語/FW/ツール等のバージョンなど)
Androidstudio2.2
OpenCV for android 2.4.11
実機ASUS Nexus7 (android6.0.1,API23)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

基本的にパスは’作業パス’です。特に指定していない限り。

投稿2016/11/09 10:53

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomoe

2016/11/09 17:20

申し訳ありません。作業パスとはどういったものでしょうか? 自分で調べてみましたが分かりませんでしたm(_ _)m
guest

0

基本的にパスは’作業パス’です。特に指定していない限り。

投稿2016/11/09 10:52

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問