#include "seamcarving.h" #include #include #include #include #include SeamCarvingVertical::SeamCarvingVertical(char* fileName, int seams, bool grow) : SeamCarving( cv::imread(fileName, cv::IMREAD_COLOR), seams, grow) { sliderMax = image.rows; cv::Mat oldImage = image; image = image.t(); init(); image = oldImage; finalImage = finalImage.t(); } cv::Mat SeamCarvingVertical::drawSeam(const cv::Mat &frame, const std::vector &seam) { cv::Mat retMat = frame.clone(); for(int col = 0; col < frame.cols; col++) { for(int row = 0; row < frame.rows; row++) { retMat.at(seam[col], col)[0] = 0; retMat.at(seam[col], col)[1] = 255; retMat.at(seam[col], col)[2] = 0; } } return retMat; } void SeamCarvingVertical::computeNewFinalImage(int pos) { cv::Mat oldImage = image; image = image.t(); SeamCarving::computeNewFinalImage(pos); image = oldImage; finalImage = finalImage.t(); } #if DEBUG void SeamCarvingVertical::showSeamsImg() { cv::Mat oldImage = this->image; this->image = this->image.t(); SeamCarving::showImage(); this->image = oldImage; } #endif