bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
ny = new Mat();
Utils.bitmapToMat(bitmap, ny);
Mat bgrImage = new Mat();
Imgproc.cvtColor(ny, bgrImage, Imgproc.COLOR_RGB2BGR);
bgrImage.convertTo(bgrImage, CvType.CV_32F, 1.0 / 255.0);
Mat reshapedImage = bgrImage.reshape(3,bgrImage.rows()*bgrImage.cols() );
Mat labels = new Mat();
Mat centers = new Mat();
ArrayList labelsList = new ArrayList();
int K = 32; // Number of clusters (colors)
TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER, 400, 2.0);
Core.kmeans(reshapedImage, K, labels, criteria, 1, Core.KMEANS_PP_CENTERS,centers);
for (int i = 0; i < labels.rows(); i++) {
for (int j = 0; j < labels.cols(); j++) {
labelsList.add((int) labels.get(i, j)[0]);
}
}
int n = labels.cols() * labels.rows();
for (int i = 0; i < n; ++i) {
double[] color = centers.get(labelsList.get(i), 0);
labels.put(i, 0, color);
}
labels.convertTo(labels, CvType.CV_8U);
Core.normalize(labels, labels, 0, 255, Core.NORM_MINMAX, CvType.CV_8UC3);
Imgproc.cvtColor(labels,labels,Imgproc.COLOR_GRAY2RGB);
labels = labels.reshape(3,bgrImage.rows());
Mat blured = new Mat();
int kernelsz = 5;
Imgproc.medianBlur(labels, blured, kernelsz);
Bitmap resultBitmap = Bitmap.createBitmap(blured.cols(), blured.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(blured, resultBitmap);
mainview.setImageBitmap(resultBitmap);
исходное изображение
конечный результат
Я пытался применить квантование цвета с помощью opencv в студии Android но мои выходные изображения получаются только черно-белыми
Алгоритм Kmeans дает только черно-белые результаты Вот мой код Я не смог найти решения этой проблемы[code] bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData()); ny = new Mat(); Utils.bitmapToMat(bitmap, ny);
Mat bgrImage = new Mat(); Imgproc.cvtColor(ny, bgrImage, Imgproc.COLOR_RGB2BGR); bgrImage.convertTo(bgrImage, CvType.CV_32F, 1.0 / 255.0);
Mat reshapedImage = bgrImage.reshape(3,bgrImage.rows()*bgrImage.cols() );
Mat labels = new Mat(); Mat centers = new Mat(); ArrayList labelsList = new ArrayList();
int K = 32; // Number of clusters (colors) TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER, 400, 2.0);
[/code] исходное изображение конечный результат Я пытался применить квантование цвета с помощью opencv в студии Android но мои выходные изображения получаются только черно-белыми
Алгоритм Kmeans дает только черно-белые результаты
Вот мой код
Я не смог найти решения этой проблемы bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
ny = new Mat();
Utils.bitmapToMat(bitmap, ny);
Я хочу показать цветное изображение в черно-белом режиме, как это сделать с помощью colorFilter в Android Jetpack Compose?
Image(
painter = painter, contentDescription = null,
modifier = Modifier
.fillMaxSize(),
contentScale = scale,
colorFilter =...
См. черно-белое изображение.
с помощью этого изображения я создаю объект в 3D.
Логика проста
Белый пиксель > Создать объект.
/>Черный пиксель > Ничего не делать.
Эта штука работает нормально. Но я хочу создавать объекты в определенном порядке....
См. черно-белое изображение.
с помощью этого изображения я создаю объект в 3D.
Логика проста
Белый пиксель > Создать объект.
/>Черный пиксель > Ничего не делать.
Эта штука работает нормально. Но я хочу создавать объекты в определенном порядке....
Прежде чем кто-то раскритикует меня за то, что я не проверяю другие сообщения, я уже это сделал. У меня есть конкретный вопрос об одном из существующих методов преобразования изображения в оттенки серого.