diff --git a/src/CVStabilization.cpp b/src/CVStabilization.cpp index 517996d05..e160ff2dc 100644 --- a/src/CVStabilization.cpp +++ b/src/CVStabilization.cpp @@ -1,5 +1,9 @@ #include "../include/CVStabilization.h" +CVStabilization::CVStabilization(){ + +} + void CVStabilization::ProcessVideo(openshot::Clip &video){ // Make sure Clip is opened video.Open(); @@ -29,7 +33,7 @@ void CVStabilization::ProcessVideo(openshot::Clip &video){ vector new_prev_to_cur_transform = GenNewCamPosition(smoothed_trajectory); - ApplyNewTrajectoryToVideo(video, new_prev_to_cur_transform); + ApplyNewTrajectoryToClip(video, new_prev_to_cur_transform); } // Track current frame features and find the relative transformation @@ -160,7 +164,7 @@ vector CVStabilization::GenNewCamPosition(vector &new_prev_to_cur_transform){ video.new_prev_to_cur_transform = new_prev_to_cur_transform; diff --git a/src/Clip.cpp b/src/Clip.cpp index 9c20b4f8f..19d88c2eb 100644 --- a/src/Clip.cpp +++ b/src/Clip.cpp @@ -386,11 +386,17 @@ void Clip::apply_stabilization(std::shared_ptr f, int64_t frame T.at(0,2) = new_prev_to_cur_transform[frame_number].dx; T.at(1,2) = new_prev_to_cur_transform[frame_number].dy; - cv::Mat cur2; + cv::Mat frame_stabilized; - cv::warpAffine(cur, cur2, T, cur.size()); + cv::warpAffine(cur, frame_stabilized, T, cur.size()); - f->SetImageCV(cur2); + // Scale up the image to remove black borders + cv::Mat T_scale = cv::getRotationMatrix2D(cv::Point2f(frame_stabilized.cols/2, frame_stabilized.rows/2), 0, 1.04); + cv::warpAffine(frame_stabilized, frame_stabilized, T_scale, frame_stabilized.size()); + + f->SetImageCV(frame_stabilized); + + } // Get file extension diff --git a/src/examples/Example_opencv.cpp b/src/examples/Example_opencv.cpp index dbb5fdaf0..a232d7870 100644 --- a/src/examples/Example_opencv.cpp +++ b/src/examples/Example_opencv.cpp @@ -136,7 +136,7 @@ void displayStabilization(openshot::Clip &r9){ // Grab Mat image cv::Mat cvimage = f->GetImageCV(); - cv::imshow("Display Image1", cvimage); + cv::imshow("Display Image", cvimage); // Press ESC on keyboard to exit char c=(char)cv::waitKey(25); if(c==27)