気を取り直して Matを使ってみる

昨日の投稿は ただのぼやきに終わってしまったが、ぼやいてばかりいても何も始まらない。

ぼやきの原因は、micchyさんのブログを参考に、自作の簡単なカメラ機能で保存したJpegファイルを 『BMPに読み込み』 『BMPをOpenCvのMatに変換』 そのまま『MatからBMPに再変換』 して表示する。という簡単なプログラムを作ってみたが、OpenCvのMatに変換処理がうまくいかず。Matが空っぽになり 表示結果は真っ黒の状態が続いていることにあった。

もっと基本的なことから 勉強しないと と思っていたら、ありました !!! Android OpenCvの実験記が !!! 
ぎーくなぁどさんのブログに !!!
ようやく 先人の後追いながら いろいろ試せそうです。

まずはよくわかずじまいになっている Matを使うことから。
ぎーくなぁどさんのブログと同様に ただ真っ赤な四角を表示してみます。OpenCvのバージョンの違いで クラスがリネームされたり コントラスタが変わっているのでソースもUpします。
OpenCvを使ったアプリケーションを作るには OpenCvライブラリの追加が必要です。ここ

その1

public class OpenCVnyumonActivity extends Activity {
    ImageView imgv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Mat mat = new Mat(20,20,CvType.CV_8UC3,new Scalar(0, 0, 255));
        Bitmap bitmap= Bitmap.createBitmap(mat.width(), mat.height(), Bitmap.Config.ARGB_8888);
        android.MatToBitmap(mat, bitmap);

        imgv = (ImageView)findViewById(R.id.imageView1);
        imgv.setImageBitmap(bitmap);
    }
}

 処理結果

予想に反して なにか市松模様のような四角が表示されました。ぎーくなぁどさんのようなサイケ模様ではありません。

その2
 その1での不具合は ぎーくなぁどさんの記事で覚悟していたのですが、不具合の雰囲気は多いに違っていて 果たして??
と思いましたが、その2に書いてあるように 
『MatではBGRAのBitmapになっていて、Bitmapに変換する前にImgproc.cvtColor(Mat src, Mat dst, int code, int dstCn)でRGBAへ変換する必要がある』とのことでその1 のハイライト部分を

Mat matBGRA = new Mat(20,20, CvType.CV_8UC3, new Scalar(0, 0, 255));
Mat matRGBA = new Mat();
Imgproc.cvtColor(matBGRA, matRGBA, Imgproc.COLOR_BGRA2RGBA, 4);
Bitmap bitmap= Bitmap.createBitmap(matRGBA.width(), matRGBA.height(), Bitmap.Config.ARGB_8888);
android.MatToBitmap(matRGBA, bitmap);

と変更することで 下図のように 表示されました。初めて思い通りの表示結果!!!

ようやくスタート台に立った感じ ぎーくなぁどさんに感謝

画像処理の考え方を取得するため ぎーくなぁどさん と同じように http://opencv.jp/cookbook/opencv_img.html に書いてある画像処理を一つ一つ試してみることにします。

 by Android2.2 with OpenCv 2.3.1 for Android   
スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. nooj loon より:

    コメントありがとうございます。
    どうせ誰も見てないし。。とモチベーションを失いかけていたとこでしたが、またちょっとやる気が出ましたw

  2. のぼった より:

    こちらこそ
    ぎーくなぁどさん ですね
    コメントありがとうございます。

    多いに参考にさせていただいてます。ぎーくなぁどさんの記事にあるように本当にOpenCv for AndroidとばかりでなくJava版の記事が少なく 私のような初心者には 敷居の高さを感じてます。
    これからも参考にさせていただきます。後追いにはなりますが よろしくお願いします。