code_app/modules/imgproc/ImageProcess/ImageApplyDispersion.cpp

45 lines
1.1 KiB
C++
Raw Normal View History

#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)
{
}