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

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

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

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

1回答

1546閲覧

画像が表示されません。

snoooopy

総合スコア10

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

0クリップ

投稿2017/02/03 07:18

編集2022/01/12 10:55

クリックすると撮影した画像に対してエッジ検出処理を行い表示させるようにしたいんですがどうしても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); }

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

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

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

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

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

ozwk

2017/02/03 08:23

mImageView代入後にnullチェックしてnullかどうかlog出してみてください
snoooopy

2017/02/03 09:12

追記通り編集しmImageView代入後にnullチェックしてみたところlogは表示されませんでした。さらに、 Bitmap too large to be uploaded into a textureというエラーがあったのでmImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);を追加すると表示されるようになりました。
guest

回答1

0

ログに"click", "4"を出力する命令の次にある

mImageView = (ImageView)findViewById(R.id.m_image_view);

で使われている R が、質問に書かれたコードでは定義されていません。

Rは、どのように定義され、どのような値が入っているのでしょうか?
Rの値が初期化されていないために、nullなのではないかという推測も可能です。

Rを定義しているコードがあるのであれば、それを質問に追記してください。

投稿2017/02/03 08:11

coco_bauer

総合スコア6915

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

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

snoooopy

2017/02/03 09:16

追記とおりに編集すると、 Bitmap too large to be uploaded into a textureというエラーがあったのでmImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);を追加したところ表示されるようになりましたが、次はsalt関数のところでエラーが起きてしまいました。ここはもう少しエラーを見て考えてみます。 ご意見ありがとうございました。またよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問