Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ibaaj
Created April 26, 2016 08:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ibaaj/7803d891e6ffd0729c0bb4a9c8078885 to your computer and use it in GitHub Desktop.
Save ibaaj/7803d891e6ffd0729c0bb4a9c8078885 to your computer and use it in GitHub Desktop.
diffimg.cpp
#include <opencv/cv.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
cv::Mat backgroundImage = imread(argv[1], CV_LOAD_IMAGE_COLOR);
cv::Mat currentImage = imread(argv[2], CV_LOAD_IMAGE_COLOR);
cv::Mat HSV_currentImage, HSVbackgroundImagebg;
cvtColor(backgroundImage, HSVbackgroundImagebg, CV_RGB2HSV );
cvtColor(currentImage, HSV_currentImage, CV_RGB2HSV );
cv::Mat diffImage;
cv::absdiff(backgroundImage, currentImage, diffImage);
cv::Mat foregroundMask = cv::Mat::zeros(diffImage.rows, diffImage.cols, CV_8UC1);
float threshold = 80.0f;
float dist;
for(int j=0; j<diffImage.rows; ++j)
for(int i=0; i<diffImage.cols; ++i)
{
cv::Vec3b pix = diffImage.at<cv::Vec3b>(j,i);
dist = (pix[0]*pix[0] + pix[1]*pix[1] + pix[2]*pix[2]);
dist = sqrt(dist);
if(dist>threshold)
{
foregroundMask.at<unsigned char>(j,i) = 255;
}
}
imwrite( argv[3], foregroundMask );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment