昨日の投稿は ただのぼやきに終わってしまったが、ぼやいてばかりいても何も始まらない。
ぼやきの原因は、micchyさんのブログを参考に、自作の簡単なカメラ機能で保存したJpegファイルを 『BMPに読み込み』 『BMPをOpenCvのMatに変換』 そのまま『MatからBMPに再変換』 して表示する。という簡単なプログラムを作ってみたが、OpenCvのMatに変換処理がうまくいかず。Matが空っぽになり 表示結果は真っ黒の状態が続いていることにあった。
もっと基本的なことから 勉強しないと と思っていたら、ありました !!! Android OpenCvの実験記が !!!
ぎーくなぁどさんのブログに !!!
ようやく 先人の後追いながら いろいろ試せそうです。
まずはよくわかずじまいになっている Matを使うことから。
ぎーくなぁどさんのブログと同様に ただ真っ赤な四角を表示してみます。OpenCvのバージョンの違いで クラスがリネームされたり コントラスタが変わっているのでソースもUpします。
OpenCvを使ったアプリケーションを作るには OpenCvライブラリの追加が必要です。ここ
その1
public class OpenCVnyumonActivity extends Activity { |
/** Called when the activity is first created. */ |
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 )); |
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版の記事が少なく 私のような初心者には 敷居の高さを感じてます。
これからも参考にさせていただきます。後追いにはなりますが よろしくお願いします。