#include "opencv2/stitching/warpers.hpp"
#include "opencv2/stitching/detail/camera.hpp"

#ifndef warp_images_h
#define warp_images_h

class WarpImages {
private:
	std::vector<cv::Mat> masks;
	cv::Ptr<cv::detail::RotationWarper> warper; // pointer to an image warper
	int no_of_videos;
	float swa; // seam work aspect

public:
	WarpImages(int no_of_videos,
		std::string warp_type,
		cv::Ptr<cv::WarperCreator> &warper_creator,
		float warped_image_scale,
		double seam_work_aspect);

	int warp_images(std::vector<cv::Point> &corners, // vector to store positions of image corners
		std::vector<cv::Mat> &masks_warped, // vector to store warped image masks
		std::vector<cv::Mat> &images_warped, // vector to store warped images
		std::vector<cv::Size> &sizes,  // vector to store image sizes
		std::vector<cv::Mat> &images,  // vector containing resized images
		std::vector<cv::detail::CameraParams> &cameraParameters, // vector stores camera matrices e.g. rotation
		std::vector<cv::Mat> &images_warped_temp); // temp vector to store warped images
};

#endif
