#include "ImageApplyDispersion.h" CImageApplyDispersion::CImageApplyDispersion() : 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) = 0.15f; m_kernal_b.at(1, 0) = 1.15f; m_kernal_b.at(2, 0) = -0.3f; m_kernal_g.at(0, 0) = 0.806f; m_kernal_g.at(1, 0) = 0.484f; m_kernal_g.at(2, 0) = -0.3f; m_kernal_r.at(0, 0) = 0.484f; m_kernal_r.at(1, 0) = 0.806f; m_kernal_r.at(2, 0) = -0.3f; } 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) { }