Skip to content

Instantly share code, notes, and snippets.

@companje
Created March 4, 2016 14:36
Show Gist options
  • Save companje/0ab635af72b7d0ef4421 to your computer and use it in GitHub Desktop.
Save companje/0ab635af72b7d0ef4421 to your computer and use it in GitHub Desktop.
Logitech C920 with IR blocker removed and red filter added. OpenCV code using BackgroundSubtractorMOG2
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
using namespace cv;
int
main (int argc, char *argv[])
{
cv::Mat frame;
cv::Mat back;
cv::Mat fore;
cv::VideoCapture cap(0);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
// cap.set(CV_CAP_PROP_AUTO_EXPOSURE, 0);
// cap.set(CV_CAP_PROP_EXPOSURE, 2);
cv::BackgroundSubtractorMOG2 bg;
bg.set ("nmixtures", 3);
//bg.bShadowDetection = false;
std::vector < std::vector < cv::Point > >contours;
namedWindow("b");
namedWindow("g");
namedWindow("r");
namedWindow("rgb");
resizeWindow("rgb",640,480);
resizeWindow("r",640,480);
resizeWindow("g",640,480);
resizeWindow("b",640,480);
moveWindow("rgb", 0, 0);
moveWindow("r", 640, 0);
moveWindow("g", 0, 530);
moveWindow("b", 640, 530);
cv::Mat bgr[3]; //destination array
for (;;)
{
cap >> frame;
Mat blue(frame.size(),frame.type());
vector<Mat> bgr;
split(frame, bgr);
cvtColor(bgr[0],blue,CV_GRAY2RGB);
bg.operator()(blue, fore);
bg.getBackgroundImage(back);
cv::erode (fore, fore, cv::Mat ());
cv::dilate (fore, fore, cv::Mat ());
cv::findContours (fore, contours, CV_RETR_EXTERNAL,
CV_CHAIN_APPROX_NONE);
cv::drawContours (blue, contours, -1, cv::Scalar (0, 0, 255), 2);
imshow("rgb", frame);
imshow("b", blue);
imshow("g", bgr[1]);
imshow("r", bgr[2]);
cv::cvtColor(bgr[0],frame,CV_GRAY2RGB);
if (cv::waitKey (30) >= 0)
break;
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment