クリックすると撮影した画像に対してエッジ検出処理を行い表示させるようにしたいんですがどうしてもnullが出てしまいます。
ログは"click", "4"までとれているのですが、原因がわかりません。
ちなみに、mImageViewもレイアウトに
android:id="@+id/m_image_view" android:scaleType="fitCenter" android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibility="visible"/>
と作成しています。
どうかご教授お願いします。
public void onClick(View v) { Log.i("click","button"); ImageView mImageView; Intent intent = getIntent(); if(intent == null) { Log.e("click", "intentがとれない"); return; } long addr = intent.getLongExtra("myImg", 0); Mat image2 = new Mat(addr); Log.i("click", "1"); int height = image2.height(); int width = image2.width(); Mat mOutputFrame = new Mat(height, width, CvType.CV_8UC1); Mat src_img_gray = new Mat(height, width, CvType.CV_8UC1); Mat image3 = new Mat(height, width, CvType.CV_8UC1); Log.i("click", "2"); //領域抽出の前処理 Imgproc.medianBlur(image2, mOutputFrame, 7); Imgproc.Canny(mOutputFrame, image3, 80, 100); Log.i("click", "3"); //bwImage.convertTo(mGr, CvType.CV_RGB2GRAY); salt(image3.getNativeObjAddr(), 2000); Bitmap bitmap= Bitmap.createBitmap(image3.width(), image3.height(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(image3, bitmap);// Mat -> Bitmap Log.i("click", "4"); mImageView = (ImageView)findViewById(R.id.m_image_view); //_cameraBridgeViewBase.setBackgroundColor(Color.GRAY); mImageView.setImageBitmap(bitmap); // ImageViewに描画*/ Log.i("click", "finish"); }
追記
clicklistenerを呼び出すアクティビティを消して、Rの定義を忘れていたのでsetContentView(R.layout.activity_main2);を追記するとnullが消え、レイアウトは表示されたんですが、画像が表示されませんでした。
public class Main2Activity extends MainActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); ImageView mImageView; Intent intent = getIntent(); if(intent == null) { Log.e("click", "intentがとれない"); return; } long addr = intent.getLongExtra("myImg", 0); Mat image2 = new Mat(addr); Log.i("click", "1"); int height = image2.height(); int width = image2.width(); Mat mOutputFrame = new Mat(height, width, CvType.CV_8UC1); Mat src_img_gray = new Mat(height, width, CvType.CV_8UC1); Mat image3 = new Mat(height, width, CvType.CV_8UC1); Log.i("click", "2"); //領域抽出の前処理 Imgproc.medianBlur(image2, mOutputFrame, 7); Imgproc.Canny(mOutputFrame, image3, 80, 100); Log.i("click", "3"); //bwImage.convertTo(mGr, CvType.CV_RGB2GRAY); //salt(image3.getNativeObjAddr(), 2000); Bitmap bitmap= Bitmap.createBitmap(image3.width(), image3.height(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(image3, bitmap);// Mat -> Bitmap Log.i("click", "4"); mImageView = (ImageView)findViewById(R.id.m_image_view); //_cameraBridgeViewBase.setBackgroundColor(Color.GRAY); mImageView.setImageBitmap(bitmap); // ImageViewに描画 Log.i("click", "finish"); } public native void salt(long matAddrGray, int nbrElem); }