Mat packing_dete::myAdaptiveThreshold(Mat src)
{
int a = 13;
int b = 21;
//1.先算出一列有几个8,剩下几个像素
int countRow = src.rows / a;
int rowLeft = src.rows % a;
//2.算出一列有几个8,剩下几个像素
int countCol = src.cols / a;
int colLeft = src.cols % a;
Mat target3 = Mat::zeros(src.size(), src.type());
for (int k = 0; k < countRow; k++)
{
for (int l = 0; l < countCol; l++)
{
int value = 0;
for (int i = k * a; i < (k + 1) * a; i++)
{
for (int j = l * a; j < (l + 1) * a; j++)
{
value += (int)src.at<uchar>(i, j);
}
}
value = value / (a*a) - b;
for (int i = k * a; i < (k + 1) * a; i++)
{
for (int j = l * a; j < (l + 1) * a; j++)
{
if ((int)src.at<uchar>(i, j) < value)
target3.at<uchar>(i, j) = 255;
else
target3.at<uch
C++局部阈值二值化(自适应阈值)手撕代码
最新推荐文章于 2024-05-14 17:53:26 发布