45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
|
#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<float>(0, 0) = 0.15f;
|
|||
|
m_kernal_b.at<float>(1, 0) = 1.15f;
|
|||
|
m_kernal_b.at<float>(2, 0) = -0.3f;
|
|||
|
|
|||
|
m_kernal_g.at<float>(0, 0) = 0.806f;
|
|||
|
m_kernal_g.at<float>(1, 0) = 0.484f;
|
|||
|
m_kernal_g.at<float>(2, 0) = -0.3f;
|
|||
|
|
|||
|
m_kernal_r.at<float>(0, 0) = 0.484f;
|
|||
|
m_kernal_r.at<float>(1, 0) = 0.806f;
|
|||
|
m_kernal_r.at<float>(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<cv::Mat>& mats, bool isTwoSide)
|
|||
|
{
|
|||
|
}
|