Cómo cambiar el tamaño de una imagen a la imagen de alta resolución sin perder píxeles?
Estoy trabajando en algunas tareas de procesamiento de imágenes.
He hecho la resolución baja Bitmap usando getDrawingCache()
y createScalledBitmap()
- Reconocimiento y seguimiento de objetos en movimiento más rápido en Android
- OpenCV FeatureDetector
- Encuentra color dominante en un marco de cámara en OpenCV Android
- No se puede construir caffe en android
- ¿Cómo detectar la intensidad promedio de píxeles de la vista previa de cámara en vivo?
Pero cuando vuelvo a clasificar según el tamaño esta imagen a la alta resolución diga 612 X 612 mi imagen está consiguiendo enmascarada. Y se ve tan mal.
¿Hay alguna manera de cambiar el tamaño de las imágenes a altas resoluciones sin perder píxeles? ¿OpenCV tiene este tipo de clases?
- Android Yuv420sp a ARGB en OpenCV
- Android - Cómo aplicar diffenernt Efectos de imagen en mapa de bits como sepia, blanco y negro, desenfoque, etc
- Detección de objetos android opencv
- Cuadros de bits en escala de grises en android
- Cómo componer (combinar) dos imagen de la foto en android?
- Android: creación de un mapa de bits con contenido de SurfaceView
- Error con setPixels
- Android OpenCV - detectar curvas de Houghlines
No puedes. Si su imagen es 200×200, entonces es cuántos píxeles de información que contiene. Si aumenta la escala, sigue siendo la misma cantidad de información que usted tiene que esparcir en un área más amplia.
Piense en ello de esta manera – digamos que tiene una imagen que es un píxel y que el píxel es azul. Ahora desea escalar esa imagen hasta dos píxeles. ¿De qué color debe ser el segundo píxel? Respuesta: puede ser cualquier cosa. No hay información en el primer píxel que puede decidir con autoridad qué debe ser el segundo píxel, no hay información disponible.
Por lo tanto, no es una cuestión de "perder los píxeles", como lo pones, es una cuestión de añadir nuevos píxeles sin información sobre lo que debe verse. Así que el cambio de tamaño utiliza la información que tiene, que básicamente dice "hacer píxeles insertados / nuevos de igual color que el píxel preexistente más cercano".
Hay algoritmos y técnicas para la interpolación (adivinando) lo que los píxeles insertados deben tener el aspecto de evitar bordes dentados y tal. Wikipedia tiene una buena información sobre varias técnicas de escalado basadas en la interpolación y sobremuestreo como punto de partida. Tenga en cuenta que ninguna de estas técnicas crea nueva información, solo suavizan los bordes y hacen que la imagen escalada parezca menos dentada.
Lo que debe hacer es crear una imagen original de tamaño 612 X 612 y luego reducir el tamaño y guardarlo como algo más para que tenga una imagen grande original y una imagen pequeña. Su fácil de ir de la imagen grande a la pequeña del tamaño que va de pequeño a grande.
He resuelto esto usando los activos ..
(1) Poner todas mis imágenes en la carpeta de activos
(2) Lea las imágenes usando inputstream
ahora i dont necesidad de cambiar su tamaño y funciona bien como yo quiero. Me gusta esto:
private void setThemeBackgroundImage(String imageName, Button themeButton) { try { InputStream backgroundBitmap = getAssets().open(imageName); Bitmap immutableBitmap = BitmapFactory .decodeStream(backgroundBitmap); themeButton.setBackgroundDrawable(new BitmapDrawable( getResources(), immutableBitmap)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
- ¿Qué es 'action android: name = "com.android.vending.INSTALL_REFERRER"'?
- Samsung Galaxy s 3 driver usb