¿Cómo puedo restar una imagen de otra usando openCV?restar una imagen de otra usando openCV
Obs .: Me baremo no utilizar la implementación de Python, porque voy a tener que hacerlo en C++
¿Cómo puedo restar una imagen de otra usando openCV?restar una imagen de otra usando openCV
Obs .: Me baremo no utilizar la implementación de Python, porque voy a tener que hacerlo en C++
Uso LoadImage
para cargar sus imágenes en la memoria, a continuación, utilizar el método Sub.
Este enlace contiene un código de ejemplo, si eso ayuda: http://permalink.gmane.org/gmane.comp.lib.opencv/36167
#include <cv.h>
#include <highgui.h>
using namespace cv;
Mat im = imread("cameraman.tif");
Mat im2 = imread("lena.tif");
Mat diff_im = im - im2;
Cambiar los nombres de las imágenes. También asegúrate de que tengan el mismo tamaño.
use el método cv :: restar().
Mat img1=some_img;
Mat img2=some_img;
Mat dest;
cv::subtract(img1,img2,dest);
Esto realiza el elemento restado de (img1-img2). se pueden encontrar más detalles al respecto http://docs.opencv.org/modules/core/doc/operations_on_arrays.html
En lugar de utilizar diff
o simplemente la resta llanura im1-im2
Yo sugeriría más bien el método OpenCV cv::absdiff
using namespace cv;
Mat im1 = imread("image1.jpg");
Mat im2 = imread("image2.jpg");
Mat diff;
absdiff(im1, im2, diff);
Dado que las imágenes se almacenan generalmente utilizando formatos sin firmar, los métodos de sustracción de @Dat y @ ssh99 matarán todas las diferencias negativas. Por ejemplo, si algunos píxel de una imagen BMP de tiene valor [20, 50, 30]
para im1
y [70, 80, 90]
para im2
, utilizando tanto im1 - im2
y diff(im1, im2, diff)
producirá valor [0,0,0]
, ya 20-70 = -50
, 50-80 = -30
, 30-90 = -60
y todos los resultados negativos se convertirá en valor sin signo de 0
, que , en la mayoría de los casos, no es lo que quieres. El método absdiff
en su lugar calculará los valores absolutos de todas las restas, produciendo de esta forma un [50,30,60]
más razonable.
Lo intentaré, mi amigo. Gracias – marionmaiden
Esta respuesta nació obsoleta :) [Respuesta de DatChu] (http://stackoverflow.com/a/2549246/2436175) es la única válida hoy en día. – Antonio
El primer enlace expira, el segundo enlace está muerto. – Twonky