Pracuję nad projektem przy użyciu OpenCV243, muszę uzyskać pierwszy plan podczas strumienia, mój problem polega na tym, że używam cv :: absdiff, aby uzyskać to naprawdę nie pomaga, tutaj jest mój kod i wynik.Kontekst i pierwszy plan w OpencV
#include <iostream>
#include<opencv2\opencv.hpp>
#include<opencv2\calib3d\calib3d.hpp>
#include<opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
int main(){
cv::VideoCapture cap(0);
cv::Mat frame,frame1,frame2;
cap >> frame;
frame.copyTo(frame1);
cv::imwrite("background.jpeg",frame1);
int key = 0;
while(key!=27){
cap >> frame;
cv::absdiff(frame, frame1, frame2); // frame2 = frame -frame1
cv::imshow("foreground", frame2);
if(key=='c'){
//frame.copyTo(frame2);
cv::imwrite("foreground.jpeg", frame2);
key = 0;
}
cv::imshow("frame",frame);
key = cv::waitKey(10);
}
cap.release();
return 0;
}
jak widać pracę odejmowanie, ale to, co chcę dostać to tylko wartości, które zmieniły na przykład jeśli mają piksela w tle z [130,130,130] i samo pikseli ma [200,200,200] w ramce chcę uzyskać dokładnie te ostatnie wartości i nie [70,70,70] już widziałem ten poradnik: http://mateuszstankiewicz.eu/?p=189 ale nie mogę zrozumieć kod i mam problemy z ustawianiem cv :: BackgroundSubtractorMOG2 z mojej wersji OpenCV
Dzięki z góry za pomoc
ty