Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions src/convertcolor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,14 @@ void ConvertColor_BGR2GRAY_BT709(const cv::Mat& src, cv::Mat& dst)

void ConvertColor_BGR2GRAY_BT709_fpt(const cv::Mat& src, cv::Mat& dst)
{
CV_Assert(CV_8UC3 == src.type());
CV_Assert(CV_8UC3 == src.type());
cv::Size sz = src.size();
dst.create(sz, CV_8UC1);

const int bidx = 0;
unsigned int coef1 = 0.2126f*pow(2,16) + .5f;
unsigned int coef2 = 0.7152f*pow(2,16) + .5f;
unsigned int coef3 = 0.0722f*pow(2,16) + .5f;

for (int y = 0; y < sz.height; y++)
{
Expand All @@ -67,8 +70,8 @@ void ConvertColor_BGR2GRAY_BT709_fpt(const cv::Mat& src, cv::Mat& dst)

for (int x = 0; x < sz.width; x++)
{
float color = 0.2126 * psrc[x][2-bidx] + 0.7152 * psrc[x][1] + 0.0722 * psrc[x][bidx];
pdst[x] = (int)(color + 0.5);
unsigned int color = (coef1 * psrc[x][2-bidx] + coef2 * psrc[x][1] + coef3 * psrc[x][bidx]);
pdst[x] = (int)((float)color/pow(2,16) + .5f);
}
}
}
Expand Down
59 changes: 59 additions & 0 deletions test/test_skeleton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,62 @@ TEST(skeleton, resize_matches_opencv)
// std::cout << "Difference:\n" << reference - result << std::endl;
EXPECT_LT(maxDifference(reference, result), 2);
}

TEST(skeleton, 2_plus_2_equals_4)
{
EXPECT_EQ(4, 2 + 2);
}

TEST(skeleton, ConvertColorDoesNotChangeSize)
{
Mat src(10, 20, CV_8UC3);
randu(src, Scalar::all(0), Scalar::all(255));
Mat dst;

ConvertColor_BGR2GRAY_BT709(src, dst);

EXPECT_EQ(src.size, dst.size);
}

TEST(skeleton, GuoHallThinningDoesNotChangeSize)
{
Mat src(10, 20, CV_8UC1);
randu(src, Scalar(0), Scalar(255));
Mat dst;

GuoHallThinning(src, dst);

EXPECT_EQ(src.size, dst.size);
}

TEST(skeleton, ImageResizeSetsCorrectSize)
{
Mat src(10, 20, CV_8UC1);
randu(src, Scalar(0), Scalar(255));
Mat dst;
int firstSize = 4;
int secondSize = 5;
Size sz(firstSize, secondSize);

ImageResize(src, dst, sz);

EXPECT_EQ(true, ((dst.cols == firstSize) && (dst.rows == secondSize)));
}

TEST(skeleton, ImageResizeSavesColor)
{
Mat srcMtx(20, 16, CV_8UC1, Scalar(0));
Mat dstMtx;
Mat expectedMtx(4, 5, CV_8UC1, Scalar(0));
Size sz(4, 5);

ImageResize(srcMtx, dstMtx, sz);

double srcMin, srcMax;
minMaxLoc(srcMtx, &srcMin, &srcMax);
double dstMin, dstMax;
minMaxLoc(dstMtx, &dstMin, &dstMax);
EXPECT_EQ(dstMin, dstMax);
EXPECT_EQ(srcMin, dstMin);
EXPECT_EQ(srcMax, dstMax);
}