I slightly changed the code i've found from some website that i do not remember anymore.
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
int main ()
{
cv::Mat frame;
cv::Mat back;
cv::Mat fore;
cv::VideoCapture cap (0);
cv::BackgroundSubtractorMOG2 bg;
bg.set ("nmixtures", 3);
bg.setBool("detectShadows", false);
std::vector < std::vector < cv::Point > >contours;
cv::namedWindow("Frame");
cv::namedWindow("Background");
for(;;)
{
cap >> frame;
bg.operator ()(frame,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(frame,contours,-1,cv::Scalar(0,0,255),2);
cv::imshow("Frame",frame);
cv::imshow("Background",back);
if(cv::waitKey(30) >= 0) break;
}
return 0;
}
>>> bgs = cv2.BackgroundSubtractorMOG2()
>>> help(bgs)
Are you using findContours or Canny? When you say transparent, do you mean nothing there or a ghostly set of lines?