#include <opencv2/opencv.hpp>
using namespace cv;
#include <iostream>
using namespace std;
int main(){
VideoCapture video("C:/Users/.../Documents/bla.wmv");
int width = video.get(CV_CAP_PROP_FRAME_WIDTH);
int height = video.get(CV_CAP_PROP_FRAME_HEIGHT);
namedWindow("Video");
namedWindow("erstes Frame");
namedWindow("Maske");
Mat firstFrame;
Mat binaerMaske(height, width, CV_8UC3);
int frameNumber = 0;
int zaehler=0;
int ysumme=0;
int xsumme=0;
double mittelwertx=0;
double mittelwerty=0;
while(true){
Mat videoFrame;
Mat videoFrame2(videoFrame.rows,videoFrame.cols,CV_8UC3);
//cvtColor(videoFrame,videoFrame2,CV_BGR2HSV);
if (video.read(videoFrame) == false){
break;
}
frameNumber++;
if(frameNumber == 1){
videoFrame.copyTo(firstFrame);
}
for(int x = 0; x < videoFrame.cols; x++){
for (int y = 0; y < videoFrame.rows; y++){
Vec3b pixelVideo = videoFrame.at<Vec3b>(y, x);
Vec3b pixelFirstFrame = firstFrame.at<Vec3b>(y,x);
int helligkeitPixelVideo =
(pixelVideo[0] + pixelVideo[1] + pixelVideo[2])/3;
int helligkeitPixelFirstFrame =
(pixelFirstFrame[0] + pixelFirstFrame[1] + pixelFirstFrame[2])/3;
int schwelle = 20;
if(abs(helligkeitPixelVideo - helligkeitPixelFirstFrame) > schwelle){
// Vordergrund
Vec3b white (255,255,255);
binaerMaske.at<Vec3b>(y,x) = white;
zaehler++; //zaehlen wie viele weiße es gibt
xsumme=xsumme+x;
ysumme=ysumme+y;
}
else{
// Hintergrund
Vec3b blueback (255,0,0);
binaerMaske.at<Vec3b>(y,x) = blueback;
}
}
}
if (zaehler!=0){
xsumme=xsumme/zaehler;
ysumme=ysumme/zaehler;
}
zaehler=0;
Point schwerpkt (xsumme,ysumme);
Point linestart(xsumme,ysumme-20);
Point linestart2(xsumme-20,ysumme);
Point lineend(xsumme,ysumme+20);
Point lineend2(xsumme+20,ysumme);
Point pt2 (xsumme+20,ysumme+20);
line(binaerMaske, linestart, lineend, Scalar(0,255,0), 1, 8, 0);
line(binaerMaske, linestart2, lineend2, Scalar(0,255,0), 1, 8, 0);
cout<<"xsumme: "<<xsumme<<endl;
cout<<"ysumme: "<<ysumme<<endl;
cout<<"zahler: "<<zaehler<<endl;
imshow("Video", videoFrame);
imshow("erstes Frame", firstFrame);
imshow("Maske", binaerMaske);
waitKey(30);
}
}