В приложении для Android-приложений для чтения визитных карточек мне нужно преобразовать растровое изображение с цветным изображением на черный & белое изображение растровое изображение (не изображение с серой шкалой) для чтения текста OCR. поэтому, пожалуйста, помогите мне преобразовать растровое изображение цветного изображения в черный & белое изображение растровое изображение в android.Как преобразовать растровое изображение растрового изображения в черно-белое изображение растрового изображения в android?
ответ
Для преобразования в черно-белый цвет необходимо использовать ColorMatrix
и ColorFilter
класс. Используйте ColorMatrix
- ColorMatrix cm1 = new ColorMatrix(new float[]{0.5f,0.5f,0.5f,0,0, 0.5f,0.5f,0.5f,0,0, 0.5f,0.5f,0.5f,0,0, 0,0,0,1,0,0, 0,0,0,0,1,0 });
Вы можете преобразовать изображение, применяя цветовой фильтр следующим образом:
Bitmap bwBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bwBitmap);
//set contrast
ColorMatrix contrastMatrix = new ColorMatrix();
//change contrast
float contrast = 50.f;
float shift = (-.5f * contrast + .5f) * 255.f;
contrastMatrix .set(new float[] {
contrast , 0, 0, 0, shift ,
0, contrast , 0, 0, shift ,
0, 0, contrast , 0, shift ,
0, 0, 0, 1, 0 });
//apply contrast
Paint contrastPaint = new Paint();
contrastPaint.setColorFilter(new ColorMatrixColorFilter(contrastMatrix));
canvas.drawBitmap(colorBitmap, 0, 0, contrastPaint);
//set saturation
ColorMatrix saturationMatrix = new ColorMatrix();
saturationMatrix.setSaturation(0); //you set color saturation to 0 for b/w
//apply new saturation
Paint saturationPaint = new Paint();
saturationPaint.setColorFilter(new ColorMatrixColorFilter(saturationPaint));
canvas.drawBitmap(colorBitmap, 0, 0, saturationPaint);
Этот вопрос является давно, но, вероятно, я мог бы помочь другим пользователям. У меня также был длинный поиск для создания (быстрого) чистого черно-белого растрового изображения.
Мой первый Methode используется bitmap.getPixel() и bitmap.setPixel() Это заняло около 8 секунд (832 х 1532) Новый метод взяли 0.4 сек! Благодаря коэффициенту 20!
Теперь я загружаю все пиксели в Int массива и идти так через все пиксели с getPixels (..) и setPixels (..): Вот мой метод:
public static Bitmap createBlackAndWhite(Bitmap src) {
int width = src.getWidth();
int height = src.getHeight();
Bitmap bmOut = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
final float factor = 255f;
final float redBri = 0.2126f;
final float greenBri = 0.2126f;
final float blueBri = 0.0722f;
int length = width * height;
int[] inpixels = new int[length];
int[] oupixels = new int[length];
src.getPixels(inpixels, 0, width, 0, 0, width, height);
int point = 0;
for(int pix: inpixels){
int R = (pix >> 16) & 0xFF;
int G = (pix >> 8) & 0xFF;
int B = pix & 0xFF;
float lum = (redBri * R/factor) + (greenBri * G/factor) + (blueBri * B/factor);
if (lum > 0.4) {
oupixels[point] = 0xFFFFFFFF;
}else{
oupixels[point] = 0xFF000000;
}
point++;
}
bmOut.setPixels(oupixels, 0, width, 0, 0, width, height);
return bmOut;
}
- 1. Наложение растрового изображения на другое растровое изображение
- 2. Рисунок растрового изображения Android
- 3. получить небольшое растровое изображение из большого растрового изображения в android
- 4. Android: Цвет растрового изображения
- 5. Масштабирование растрового изображения искажает изображение
- 6. Android: Как вырезать растровое изображение [25] из растрового изображения [25]
- 7. Как преобразовать изображение растрового изображения в строку Base64PNG в monodroid
- 8. Растровое изображение для Android: центрирование обрезки + создание круга растрового изображения
- 9. Преобразование растрового изображения в GrayScale в Android
- 10. Утилизация растрового изображения в android
- 11. Невозможно преобразовать растровое изображение изображения в byteArray
- 12. Вставка растрового изображения в другое растровое изображение в определенном положении
- 13. Преобразование растрового изображения в сепию в android
- 14. Как вырезать одно растровое изображение из другого растрового изображения
- 15. Изменение размера растрового изображения
- 16. Как удалить прозрачность растрового изображения в android?
- 17. Android получить растровое изображение с камеры, масштаб холста в размер растрового изображения и сохранить растровое изображение
- 18. Как преобразовать растровое изображение в изображение CIELab?
- 19. Установить изображение из растрового изображения
- 20. как я могу преобразовать растровое изображение в рисованное изображение, чтобы оно отображалось поверх другого растрового изображения.
- 21. Android: изображение растрового изображения ImageView отключено
- 22. Отображение растрового изображения в Android
- 23. Создайте обрезанное растровое изображение из исходного растрового изображения
- 24. Невозможно получить изображение растрового изображения для изображения
- 25. Изменение размера растрового изображения без создания нового растрового изображения
- 26. Android || Поворот изображения растрового изображения
- 27. Как создать более крупное растровое изображение из существующего растрового изображения
- 28. Как создать растровое изображение из другого растрового
- 29. Изменение размера растрового изображения Android
- 30. Android: размер растрового изображения
Если я использую выше кода он будет производят изображение серого цвета, а не чистое черно-белое изображение, в моем приложении нужно прочитать текст в визитной карточке/визитной карточке. пожалуйста помогите. –
Обычно изображение серого цвета считается ч/б. То, что вам нужно, - это изображение с серой шкалой с высоким уровнем контраста, чтобы темные серые стали черными, а светлые серые стали белыми. Вы можете добиться изменения контраста изображения. Я отредактировал мой комментарий, вставив код, чтобы сделать эту настройку простейшей ColorMatrix. Попытайтесь изменить значение контраста, чтобы найти лучший результат для вас. –
Если я использую выше метод ma.set(), он снова будет менять изображение в виде графического изображения на цветное изображение с контрастом. пожалуйста помогите. –