#include "ImageApplyDispersion.h" CImageApplyDispersion::CImageApplyDispersion(float a, float b, float c, float sharpen) : CImageApply() , m_kernal_b(3, 1, CV_32FC1) , m_kernal_g(3, 1, CV_32FC1) , m_kernal_r(3, 1, CV_32FC1) { m_kernal_b.at(0, 0) = a; m_kernal_b.at(1, 0) = 1.0f + sharpen - a; m_kernal_b.at(2, 0) = -sharpen; m_kernal_g.at(0, 0) = b; m_kernal_g.at(1, 0) = 1.0f + sharpen - b; m_kernal_g.at(2, 0) = -sharpen; m_kernal_r.at(0, 0) = c; m_kernal_r.at(1, 0) = 1.0f + sharpen - c; m_kernal_r.at(2, 0) = -sharpen; } CImageApplyDispersion::~CImageApplyDispersion() { } void CImageApplyDispersion::apply(cv::Mat& pDib, int side) { (void)side; if (pDib.channels() != 3) return; cv::Mat bgr[3]; cv::split(pDib, bgr); cv::filter2D(bgr[0], bgr[0], bgr[0].depth(), m_kernal_b); cv::filter2D(bgr[1], bgr[1], bgr[1].depth(), m_kernal_g); cv::filter2D(bgr[2], bgr[2], bgr[2].depth(), m_kernal_r); cv::merge(bgr, 3, pDib); } void CImageApplyDispersion::apply(std::vector& mats, bool isTwoSide) { }