前提・実現したいこと
floodFillを活用して、色の塗りつぶしを作成しています。
塗りつぶしの色を透明にする方法が全く分からない状態です。
※透明でなければあっさりとできました。
そもそも可能なのでしょうか?
また、サンプルコードなど探してみたのですが、
見つかりませんでした。
どこかに似たサンプルコードはありますでしょうか?
全く方法がわからず、大雑把な質問となってしまい申し訳ございません。
よろしくお願いします。
Android(java)
1private void drawing() { 2 3//■Matの作成 4Mat mat_original = new Mat(); 5Mat mat = new Mat(); 6 7//■Bitmapをmatに変換 8Utils.bitmapToMat(bitmap_toumei, mat_original); 9Utils.bitmapToMat(bitmap_toumei, mat); 10 11//■チャネルの変更(floodfillは透明を扱えないため) 12Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGBA2GRAY); //変換種類 https://docs.opencv.org/java/2.4.9/org/opencv/imgproc/Imgproc.html 13 14org.opencv.core.Point seedPoint = new org.opencv.core.Point(seedCoordinateList.get(seedCoordinateList.size()-1).cX, seedCoordinateList.get(seedCoordinateList.size()-1).cY); 15 16//■輝度値/色の差の許容下限値の設定 17double diff = 50.0; 18 19//■Maskデータ作成 cv::Mat mask = cv::Mat::zeros(image.rows + 2, image.cols + 2, CV_8UC1); 20Mat mat2 = new Mat(mat.height() + 2 , mat.width() + 2, CV_8UC1); 21 22//■色変換 23Imgproc.floodFill( 24mat, 25mat2, 26seedPoint, 27new Scalar(.0, .0, .0, .0), 28new org.opencv.core.Rect(), 29new Scalar(diff), 30new Scalar(diff), 314 | Imgproc.FLOODFILL_MASK_ONLY | (255 << 8) 32//Imgproc.FLOODFILL_FIXED_RANGE | 4 //種類: FLOODFILL_FIXED_RANGE:http://opencv.jp/opencv-2.1/cpp/miscellaneous_image_transformations.html 33 34); 35 36//■mask == 255 のピクセルの透過度を 255 にする。 37org.opencv.core.Rect roi = new org.opencv.core.Rect(1, 1, mat.width(), mat.height()); 38mat2 = mat2.submat(roi); 39mat_original = mat_original.setTo(new Scalar(.0, .0, .0, .0),mat2); 40 41//■■bitmapに変換 42Bitmap output = Bitmap.createBitmap(bitmap_toumei.getWidth(), bitmap_toumei.getHeight(), Bitmap.Config.ARGB_8888); 43Utils.matToBitmap(mat_original ,output,true); 44bitmap_toumei = output; 45 46//■再描画 47invalidate(); 48 49}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/06 09:57
2018/10/07 01:57
2018/10/07 02:06
2018/10/07 02:45 編集
2018/10/07 03:17
2018/10/07 03:45
2018/10/07 04:20
2018/10/07 04:37