mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 15:53:03 +04:00
Merge branch 4.x
This commit is contained in:
@@ -1863,6 +1863,26 @@ TEST(Imgproc_ColorBayer, regression)
|
||||
EXPECT_EQ(0, countNonZero(diff.reshape(1) > 1));
|
||||
}
|
||||
|
||||
TEST(Imgproc_ColorBayer2Gray, regression_25823)
|
||||
{
|
||||
const int n = 100;
|
||||
Mat src(n, n, CV_8UC1);
|
||||
Mat dst;
|
||||
|
||||
for (int i = 0; i < src.rows; ++i)
|
||||
{
|
||||
for (int j = 0; j < src.cols; ++j)
|
||||
{
|
||||
src.at<uchar>(i, j) = (i + j) % 2;
|
||||
}
|
||||
}
|
||||
|
||||
cvtColor(src, dst, COLOR_BayerBG2GRAY);
|
||||
|
||||
Mat gold(n, n, CV_8UC1, Scalar(1));
|
||||
EXPECT_EQ(0, cv::norm(dst, gold, NORM_INF));
|
||||
}
|
||||
|
||||
TEST(Imgproc_ColorBayerVNG, regression)
|
||||
{
|
||||
cvtest::TS* ts = cvtest::TS::ptr();
|
||||
@@ -3203,4 +3223,20 @@ TEST(ImgProc_RGB2Lab, NaN_21111)
|
||||
#endif
|
||||
}
|
||||
|
||||
// See https://github.com/opencv/opencv/issues/25971
|
||||
// If num of channels is not suitable for selected cv::ColorConversionCodes,
|
||||
// e.code must be cv::Error::BadNumChannels.
|
||||
TEST(ImgProc_cvtColor_InvalidNumOfChannels, regression_25971)
|
||||
{
|
||||
try {
|
||||
cv::Mat src = cv::Mat::zeros(100, 100, CV_8UC1);
|
||||
cv::Mat dst;
|
||||
EXPECT_THROW(cv::cvtColor(src, dst, COLOR_RGB2GRAY), cv::Exception);
|
||||
}catch(const cv::Exception& e) {
|
||||
EXPECT_EQ(e.code, cv::Error::BadNumChannels);
|
||||
}catch(...) {
|
||||
FAIL() << "Unexpected exception is happened.";
|
||||
}
|
||||
}
|
||||
|
||||
}} // namespace
|
||||
|
||||
@@ -65,4 +65,31 @@ TEST(Imgproc_CornerSubPix, out_of_image_corners)
|
||||
ASSERT_TRUE(Rect(0, 0, image.cols, image.rows).contains(corners.front()));
|
||||
}
|
||||
|
||||
// See https://github.com/opencv/opencv/issues/26016
|
||||
TEST(Imgproc_CornerSubPix, corners_on_the_edge)
|
||||
{
|
||||
cv::Mat image(500, 500, CV_8UC1);
|
||||
cv::Size win(1, 1);
|
||||
cv::Size zeroZone(-1, -1);
|
||||
cv::TermCriteria criteria;
|
||||
|
||||
std::vector<cv::Point2f> cornersOK1 = { cv::Point2f(250, std::nextafter(499.5f, 499.5f - 1.0f)) };
|
||||
EXPECT_NO_THROW( cv::cornerSubPix(image, cornersOK1, win, zeroZone, criteria) ) << cornersOK1;
|
||||
|
||||
std::vector<cv::Point2f> cornersOK2 = { cv::Point2f(250, 499.5f) };
|
||||
EXPECT_NO_THROW( cv::cornerSubPix(image, cornersOK2, win, zeroZone, criteria) ) << cornersOK2;
|
||||
|
||||
std::vector<cv::Point2f> cornersOK3 = { cv::Point2f(250, std::nextafter(499.5f, 499.5f + 1.0f)) };
|
||||
EXPECT_NO_THROW( cv::cornerSubPix(image, cornersOK3, win, zeroZone, criteria) ) << cornersOK3;
|
||||
|
||||
std::vector<cv::Point2f> cornersOK4 = { cv::Point2f(250, std::nextafter(500.0f, 500.0f - 1.0f)) };
|
||||
EXPECT_NO_THROW( cv::cornerSubPix(image, cornersOK4, win, zeroZone, criteria) ) << cornersOK4;
|
||||
|
||||
std::vector<cv::Point2f> cornersNG1 = { cv::Point2f(250, 500.0f) };
|
||||
EXPECT_ANY_THROW( cv::cornerSubPix(image, cornersNG1, win, zeroZone, criteria) ) << cornersNG1;
|
||||
|
||||
std::vector<cv::Point2f> cornersNG2 = { cv::Point2f(250, std::nextafter(500.0f, 500.0f + 1.0f)) };
|
||||
EXPECT_ANY_THROW( cv::cornerSubPix(image, cornersNG2, win, zeroZone, criteria) ) << cornersNG2;
|
||||
}
|
||||
|
||||
}} // namespace
|
||||
|
||||
Reference in New Issue
Block a user