|
|
|
|
@ -457,6 +457,32 @@ int CheckUtil::CalHj(const cv::Mat &img, const cv::Mat &mask, const cv::Mat &bac
|
|
|
|
|
return meanValue123[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int CheckUtil::CalHjWeighted(const cv::Mat &img, const cv::Mat &mask, int b_value, float power)
|
|
|
|
|
{
|
|
|
|
|
cv::Mat imgf;
|
|
|
|
|
if (img.type() != CV_32F)
|
|
|
|
|
img.convertTo(imgf, CV_32F);
|
|
|
|
|
else
|
|
|
|
|
imgf = img;
|
|
|
|
|
|
|
|
|
|
cv::Mat absDiff = cv::abs(imgf - b_value);
|
|
|
|
|
|
|
|
|
|
cv::Mat weight;
|
|
|
|
|
cv::pow(absDiff, power, weight);
|
|
|
|
|
|
|
|
|
|
cv::Mat maskedDiff, maskedWeight;
|
|
|
|
|
absDiff.copyTo(maskedDiff, mask);
|
|
|
|
|
weight.copyTo(maskedWeight, mask);
|
|
|
|
|
|
|
|
|
|
cv::Scalar weightedSum = cv::sum(maskedDiff.mul(weight));
|
|
|
|
|
cv::Scalar weightSum = cv::sum(maskedWeight);
|
|
|
|
|
|
|
|
|
|
if (weightSum[0] < 1e-6)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
return static_cast<int>(weightedSum[0] / weightSum[0]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float CheckUtil::CalRoi2RoiPre(cv::Rect rect1, cv::Rect rect2)
|
|
|
|
|
{
|
|
|
|
|
// 计算交集区域
|
|
|
|
|
|