1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-29 15:23:05 +04:00

Bool masks support in imgproc module.

This commit is contained in:
Alexander Smorkalov
2025-08-08 15:07:24 +03:00
parent 0559a76c6b
commit 958ded3dcd
5 changed files with 58 additions and 7 deletions
@@ -266,6 +266,34 @@ OCL_TEST_P(CalcHist, Mat)
}
}
TEST(CalcHistMask, CheckMask)
{
Mat gray = imread(cvtest::findDataFile("shared/baboon.png"), IMREAD_GRAYSCALE);
ASSERT_FALSE(gray.empty());
cv::Rect roi(gray.cols/4, gray.rows/4, gray.cols/2, gray.rows/2);
Mat mask = Mat::zeros(gray.size(), CV_8UC1);
mask(roi).setTo(255);
Mat mask_bool = Mat::zeros(gray.size(), CV_BoolC1);
mask_bool(roi).setTo(1);
Mat gray_roi = gray(roi);
const std::vector<int> channels(1, 0);
std::vector<int> histSize(1, 256);
std::vector<float> ranges(2);
ranges[0] = 0;
ranges[1] = 256;
Mat hist_mask, hist_bool, hist_roi;
cv::calcHist(std::vector<Mat>(1, gray_roi), channels, Mat(), hist_roi, histSize, ranges, false);
cv::calcHist(std::vector<Mat>(1, gray), channels, mask, hist_mask, histSize, ranges, false);
cv::calcHist(std::vector<Mat>(1, gray), channels, mask_bool, hist_bool, histSize, ranges, false);
EXPECT_MAT_NEAR(hist_roi, hist_mask, 0.0);
EXPECT_MAT_NEAR(hist_mask, hist_bool, 0.0);
}
/////////////////////////////////////////////////////////////////////////////////////
OCL_INSTANTIATE_TEST_CASE_P(Imgproc, CalcBackProject, Combine(Values((MatDepth)CV_8U), Values(1, 2), Bool()));