更新算法

This commit is contained in:
mo1027728827@qq.com 2022-05-04 11:03:01 +08:00
parent 31be481744
commit bf3879507b
4 changed files with 67 additions and 67 deletions

View File

@ -9,22 +9,22 @@ set(DIR_SRCS ${DIR_SRCS} ${DIR_HEADS})
add_library(${PROJECT_NAME} STATIC ${DIR_SRCS}) add_library(${PROJECT_NAME} STATIC ${DIR_SRCS})
target_link_libraries(${PROJECT_NAME} PRIVATE target_link_libraries(${PROJECT_NAME} PRIVATE
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libopencv_world.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libopencv_world.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libittnotify.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libittnotify.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibjasper.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibjasper.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibjpeg-turbo.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibjpeg-turbo.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibpng.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibpng.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibprotobuf.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibprotobuf.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibtiff.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibtiff.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libquirc.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libquirc.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libzlib.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libzlib.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibwebp.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/liblibwebp.a
${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libIlmImf.a ${PROJECT_SOURCE_DIR}/../3rdparty/lib/x86_64/libIlmImf.a
) )
target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR} target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/../3rdparty/nick ${PROJECT_SOURCE_DIR}/../3rdparty/nick
${PROJECT_SOURCE_DIR}/../3rdparty/opencv/include ${PROJECT_SOURCE_DIR}/../hgimgproc
) ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/include
)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../../build/) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../staticlib)

View File

@ -18,10 +18,10 @@ CImageApplyChannel::~CImageApplyChannel()
if (colors != nullptr) delete colors; if (colors != nullptr) delete colors;
} }
void CImageApplyChannel::apply(cv::Mat& pDib,int side) void CImageApplyChannel::apply(cv::Mat& pDib, int side)
{ {
(void)side; (void)side;
if (pDib.empty()) return; if (pDib.empty()) return;
cv::Mat dst(pDib.rows, pDib.cols, CV_8UC1); cv::Mat dst(pDib.rows, pDib.cols, CV_8UC1);
switch (m_channel) switch (m_channel)
@ -35,9 +35,9 @@ void CImageApplyChannel::apply(cv::Mat& pDib,int side)
break; break;
case Blue: case Blue:
cv::extractChannel(pDib, dst, 0); cv::extractChannel(pDib, dst, 0);
break; break;
case All: case All:
colourless(pDib, dst, 80); colourless(pDib, dst, 80);
break; break;
case Except_Red: case Except_Red:
except_channel(pDib, dst, 2); except_channel(pDib, dst, 2);
@ -61,7 +61,7 @@ void CImageApplyChannel::apply(cv::Mat& pDib,int side)
void CImageApplyChannel::apply(std::vector<cv::Mat>& mats, bool isTwoSide) void CImageApplyChannel::apply(std::vector<cv::Mat>& mats, bool isTwoSide)
{ {
(void)isTwoSide; (void)isTwoSide;
int i = 0; int i = 0;
for (cv::Mat& var : mats) { for (cv::Mat& var : mats) {
if (i != 0 && isTwoSide == false) if (i != 0 && isTwoSide == false)
@ -72,57 +72,56 @@ void CImageApplyChannel::apply(std::vector<cv::Mat>& mats, bool isTwoSide)
} }
} }
void CImageApplyChannel::except_channel(const cv::Mat & src, cv::Mat & dst, int channel) void CImageApplyChannel::except_channel(const cv::Mat& src, cv::Mat& dst, int channel)
{ {
int rows = static_cast<int>(src.total()); cv::Mat mv[3];
cv::Mat src_temp(rows, 3, CV_8UC1, src.data); cv::split(src, mv);
cv::Mat dst_temp(rows, 1, CV_8UC1, dst.data); cv::Mat mask, mask1, mask2;
cv::Mat temp1, temp2;
switch (channel) switch (channel)
{ {
case 0: case 0:
temp1 = src_temp(cv::Rect(1, 0, 1, rows)); mask1 = mv[0] - mv[1];
temp2 = src_temp(cv::Rect(2, 0, 1, rows)); mask2 = mv[0] - mv[2];
cv::addWeighted(temp1, 0.587, temp2, 0.299, 0, dst_temp);
break; break;
case 1: case 1:
temp1 = src_temp(cv::Rect(0, 0, 1, rows)); mask1 = mv[1] - mv[0];
temp2 = src_temp(cv::Rect(2, 0, 1, rows)); mask2 = mv[1] - mv[2];
cv::addWeighted(temp1, 0.114, temp2, 0.299, 0, dst_temp);
break; break;
case 2: case 2:
temp1 = src_temp(cv::Rect(0, 0, 1, rows)); mask1 = mv[2] - mv[1];
temp2 = src_temp(cv::Rect(1, 0, 1, rows)); mask2 = mv[2] - mv[0];
cv::addWeighted(temp1, 0.114, temp2, 0.587, 0, dst_temp);
break; break;
default: default:
break; break;
} }
cv::min(mask1, mask2, mask);
cv::cvtColor(src, dst, cv::COLOR_BGR2GRAY);
dst -= mask;
} }
void CImageApplyChannel::colourless(const cv::Mat &src, cv::Mat &dst, uchar threshold) void CImageApplyChannel::colourless(const cv::Mat& src, cv::Mat& dst, uchar threshold)
{ {
if (src.channels() != 3) if (src.channels() != 3)
{ {
dst = src; dst = src;
return; return;
} }
cv::Mat hsv; cv::Mat hsv;
cv::cvtColor(src, hsv, cv::COLOR_BGR2HSV_FULL); cv::cvtColor(src, hsv, cv::COLOR_BGR2HSV_FULL);
cv::Mat mv_hsv[3]; cv::Mat mv_hsv[3];
cv::split(hsv, mv_hsv); cv::split(hsv, mv_hsv);
size_t total = mv_hsv[1].total(); size_t total = mv_hsv[1].total();
uchar* ptr_s = mv_hsv[1].data; uchar* ptr_s = mv_hsv[1].data;
uchar* ptr_v = mv_hsv[2].data; uchar* ptr_v = mv_hsv[2].data;
for (size_t i = 0; i < total; i++) for (size_t i = 0; i < total; i++)
if (ptr_s[i] > threshold) if (ptr_s[i] > threshold)
{ {
ptr_s[i] = 0; ptr_s[i] = 0;
ptr_v[i] = 255; ptr_v[i] = 255;
} }
cv::merge(mv_hsv, 3, hsv); cv::merge(mv_hsv, 3, hsv);
cv::cvtColor(hsv, hsv, cv::COLOR_HSV2BGR_FULL); cv::cvtColor(hsv, hsv, cv::COLOR_HSV2BGR_FULL);
cv::cvtColor(hsv, dst, cv::COLOR_BGR2GRAY); cv::cvtColor(hsv, dst, cv::COLOR_BGR2GRAY);
} }

View File

@ -7,7 +7,8 @@
* v1.0 2020/4/21 * v1.0 2020/4/21
v1.1 2020/6/11 v1.1 2020/6/11
v1.2 2020/7/21 绿 v1.2 2020/7/21 绿
* v1.2 v1.3 2021/5/24
* v1.3
* ==================================================== * ====================================================
*/ */

View File

@ -1,11 +1,11 @@
/* /*
* ==================================================== * ====================================================
* <EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>Ϊ<EFBFBD>˲<EFBFBD> * 1¤71¤71¤7<EFBFBD>1ť11¤71¤71¤71¤71¤7<EFBFBD>0Č61¤71¤7<EFBFBD>0č91¤71¤7<EFBFBD>0Ë21¤7<EFBFBD>0»21¤7
* <EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά * 1¤71¤71¤7<EFBFBD>1°31¤71¤71¤71¤71¤7<EFBFBD>0Ë4
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>2020/4/21 * 1¤71¤71¤71¤7<EFBFBD>0µ21¤74Ź22020/4/21
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>ʱ<EFBFBD>2020/4/21 * 1¤71¤71¤71¤7<EFBFBD>1¬01¤7<EFBFBD>0µ21¤74Ź22020/4/21
* <EFBFBD><EFBFBD>ţ<EFBFBD>v1.0 * 1¤7·Ú1¤7<EFBFBD>001¤7v1.0
* ==================================================== * ====================================================
*/ */