¿Hay una función OpenCV para dibujar una imagen sobre otra imagen? Tengo una imagen grande del tipo Mat
. Y tengo una pequeña imagen del tipo Mat
(5x7
). Quiero dibujar esta imagen pequeña sobre la imagen grande en el coordinates
especificado.OpenCV dibujar una imagen sobre otra imagen
Respuesta
Uso Mat::rowRange()
y Mat::colRange()
para especificar el área a la que desea llamar en el destino Mat
. Código:
Mat src(5, 7, CV_8UC1, Scalar(1)); // 5x7
Mat dst(10, 10, CV_8UC1, Scalar(0)); // 10x10
src.copyTo(dst.rowRange(1, 6).colRange(3, 10));
resultados en las siguientes:
antes copyTo()
:
dst:
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
después copyTo()
:
dst:
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
'a.copyTo (big.colRange (51,55) .rowRange. (63,69))' for '5x7' –
¡Muchas gracias! – vitaly
Perfect One liner !! – user2727765
Crear una región de interés dentro de la imagen grande y luego copiar la imagen pequeña en esa región:
cv::Rect roi(cv::Point(originX, originY), cv::Size(width, height));
cv::Mat destinationROI = bigImage(roi);
smallImage.copyTo(destinationROI);
Si está seguro de la imagen pequeña se ajusta a la imagen grande, entonces usted puede simplemente hacer:
cv::Rect roi(cv::Point(originX, originY), smallImage.size());
smallImage.copyTo(bigImage(roi));
Esto desafortunadamente no parece funcionar para mí, me sale el error: 'error: no hay función de coincidencia para llamar a 'cv :: Mat :: copyTo (cv :: Mat)'. Y ofrece a los candidatos que reciben cv :: OutputArray en su lugar, cuando veo http://opencv.willowgarage.com/documentation/cpp/basic_structures.html#cv-mat-copyto parece tomar Mat como argumento, sin embargo, obtener este error? – pbond
Aquí está la solución en la versión Java de OPENCV
Rect roi= new Rect(originX,originY,smalImage.width(),smallImge.height());
smallImage.copyTo(new Mat(input,roi));
- 1. restar una imagen de otra usando openCV
- 2. Dibujar rectángulo sobre la imagen
- 3. Dibujar sobre una imagen usando Raphael.js
- 4. Superposición de una imagen sobre otra imagen en iOS
- 5. Copia de una imagen transparente sobre otra imagen transparente
- 6. opencv encontrar la imagen se coordina en otra imagen
- 7. CSS - Sobreponiendo una imagen sobre otra
- 8. ¿Cómo colocar una imagen sobre otra?
- 9. Android: imagen sobre imagen
- 10. Html Imagen sobre imagen
- 11. En matlab, cómo dibujar una grilla sobre una imagen
- 12. Detectar si un objeto de una imagen está en otra imagen con OpenCV
- 13. Cargando una imagen usando OpenCV en Android
- 14. dibujar objeto/imagen en lienzo
- 15. Cómo dibujar una imagen en una ventana?
- 16. cómo dibujar una línea en una imagen?
- 17. Copiar la región de una imagen a otra región en otra imagen
- 18. Objetivo-C: comparar una imagen con otra imagen guardada previamente
- 19. Contraste estirando una imagen por openCV
- 20. OpenCV cómo reescribir una imagen RGB
- 21. Cómo afilar una imagen en OpenCV?
- 22. Dibujar líneas múltiples en una Imagen Buffered
- 23. Cómo encontrar una imagen dentro de otra imagen usando python
- 24. C# copiar pegar una región de imagen en otra imagen
- 25. Cómo dibujar la imagen swt?
- 26. Dibujar puntos en la imagen usando jQuery
- 27. Problemas de captura de imagen OpenCV/FFMpeg
- 28. Dibuje otra imagen en un UIImage
- 29. ¿Cómo puedo superponer una imagen a otra?
- 30. android - agregando una cadena sobre una imagen extraíble?
favor aceptar algunas de responde o dice por qué no funcionan. Trata de no mantener este lugar abierto preguntas cementerio. –