1
어디서나 해결책을 찾고 있지만 찾지 못했습니다. 나는 이것이 반복적 인 질문이라는 것을 알고 있으며, 그래서 나는 정확하게하려고 노력할 것이다.ImageView에 Android OpenCV 색상 분할 표시
Android 및 OpenCV를 사용하여 HSV에서 색상 분할을 수행하고 싶습니다. I는 H, S 및 이러한 범위를 얻으면
lowerBoundH = new Scalar(meanSamples[0]-stdSamples[0]);
lowerBoundS = new Scalar(meanSamples[1]-stdSamples[1]);
upperBoundH = new Scalar(meanSamples[0]+stdSamples[0]);
upperBoundS = new Scalar(meanSamples[1]+stdSamples[1]);
: I는 I 같은 값의 범위를 얻기 위해 mean
및 std
를 획득되는 I 세그먼트에 원하는 색에 대응 HSV 샘플의 배열을 가지고
mH = new Mat();
mS = new Mat();
List<Mat> channels = new ArrayList<Mat>(2);
// convert inputFrame to HSV for segmentation
Mat hsvFrame = new Mat();
convertToHSV(inputFrame, hsvFrame);
Core.split(hsvFrame, channels);
// get H&S channels of the HSVimage
mH = channels.get(0);
mS = channels.get(1);
if(mH!=null & mS!=null){
mHinRange = new Mat();
mSinRange = new Mat();
Core.inRange(mH, lowerBoundH, upperBoundH, mHinRange);
Core.inRange(mS, lowerBoundS, upperBoundS, mSinRange);
Mat filtered = new Mat(hsvFrame.height(), hsvFrame.width(), CvType.CV_8UC1, new Scalar(4));
Core.bitwise_and(mHinRange, mSinRange, filtered);
Mat aux = new Mat();
Mat mRgb = new Mat();
inputFrame.copyTo(mRgb);
Imgproc.cvtColor(filtered, mRgb, Imgproc.COLOR_GRAY2BGR, 0);
Imgproc.cvtColor(mRgb, aux, Imgproc.COLOR_BGR2RGBA, 0);
return aux;
}else{
Log.v("NULL","H OR S CHANNELS ARE NULL");
return null;
}
그렇다면, I 변환하므로 같은 ImageView
에 표시하기 위해 Bitmap
에 Mat
분단 :
Bitmap bmp = null;
Mat tmp = new Mat(result.height(),result.width(), CvType.CV_8UC1, new Scalar(4));
try {
bmp = Bitmap.createBitmap(tmp.cols(), tmp.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(tmp, bmp);
}catch (CvException e){Log.d("Exception",e.getMessage());}
qrImage.setImageBitmap(bmp);
그러나 결과 이미지를 표시 할 때 완전히 검은 색 이미지가 나타납니다. 카메라가 구분하고자하는 색상의 물체에 직접 마주보고 있기 때문에 이것이 잘못된 것입니다.
내가 뭘 잘못하고 있니?