昨日の投稿は ただのぼやきに終わってしまったが、ぼやいてばかりいても何も始まらない。
ぼやきの原因は、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 |
コメント
コメントありがとうございます。
どうせ誰も見てないし。。とモチベーションを失いかけていたとこでしたが、またちょっとやる気が出ましたw
こちらこそ
ぎーくなぁどさん ですね
コメントありがとうございます。
多いに参考にさせていただいてます。ぎーくなぁどさんの記事にあるように本当にOpenCv for AndroidとばかりでなくJava版の記事が少なく 私のような初心者には 敷居の高さを感じてます。
これからも参考にさせていただきます。後追いにはなりますが よろしくお願いします。