bool VideoOutput::onSetRegionOfInterest(const QRectF& roi) { DPTR_D(VideoOutput); QRectF r = regionOfInterest(); d.impl->onSetRegionOfInterest(roi); d.roi = d.impl->regionOfInterest(); return r != roi; }
/****************************************************************************** * Input argument(s) : QImage *inputImage - Input image for the filter * const int &radius - Radius of structuring element * const bool &roiFlag - Flag to enable region of interest * QRect *roiRect - Region of interest rectangle * Return type : QImage* - Output image after bilateral filtering * Functionality : Function to apply bilateral filter on the given * input image and returns the processed image ******************************************************************************/ QImage *ImageSmootheningFilter::applyBilateralFilter(QImage *inputImage, const int &radius, const bool &roiFlag, QRect *roiRect) const { cv::Mat inputMat = qtOpenCVBridge->QImage2Mat(inputImage); cv::Mat outputMat = inputMat.clone(); if(roiFlag == true){ cv::Rect regionOfInterest(roiRect->x(), roiRect->y(), roiRect->width(), roiRect->height()); cv::Mat croppedInputMat(inputMat, regionOfInterest); cv::Mat croppedOutputMat(outputMat, regionOfInterest); bilateralFilter(croppedInputMat, croppedOutputMat, radius, radius*2.0, radius/2.0); } else{ bilateralFilter(inputMat, outputMat, radius, radius*2.0, radius/2.0); } return qtOpenCVBridge->Mat2QImage(outputMat); }
/****************************************************************************** * Input argument(s) : QImage *inputImage - Input image for the filter * const int &radius - Radius of structuring element * const bool &roiFlag - Flag to enable region of interest * QRect *roiRect - Region of interest rectangle * Return type : QImage* - Output image after box filtering * Functionality : Function to apply normalized box filter on the * given input image and returns the processed image ******************************************************************************/ QImage *ImageSmootheningFilter::applyNormalizedBoxFilter(QImage *inputImage, const int &radius, const bool &roiFlag, QRect *roiRect) const { cv::Mat inputMat = qtOpenCVBridge->QImage2Mat(inputImage); cv::Mat outputMat = inputMat.clone(); if(roiFlag == true){ cv::Rect regionOfInterest(roiRect->x(), roiRect->y(), roiRect->width(), roiRect->height()); cv::Mat croppedInputMat(inputMat, regionOfInterest); cv::Mat croppedOutputMat(outputMat, regionOfInterest); blur( croppedInputMat, croppedOutputMat, cv::Size(radius, radius), cv::Point(-1,-1)); } else{ blur( inputMat, outputMat, cv::Size(radius, radius), cv::Point(-1,-1)); } return qtOpenCVBridge->Mat2QImage(outputMat); }