//功能:使用全局阈值对图像进行快速阈值处理
//参数:
// src:输入图像
// mask:掩膜
// dst:输出图像
// minGray:灰度值的下限阈值
// maxGray:灰度值的上限阈值
// minSize:要提取的对象的最小大小
//返回值:无
void fast_threshold(Mat src, Mat mask, Mat &dst, int minGray, int maxGray, int minSize)
{
dst = Mat(src.size(), CV_8UC1, Scalar(0));
if (minSize <= 0 || minSize >= src.rows)
return;
int rows = src.rows;
int cols = src.cols;
int ming = std::min(minGray, maxGray);
int maxg = std::max(minGray, maxGray);
int s_gray = 0;
int m_gray = 0;
for (int row = 0; row < rows; row += 4)
{
for (int col = 0; col < cols; col++)
{
s_gray = src.at<uchar>(row, col);
m_gray = mask.at<uchar>(row, col);
if (m_gray > 0 && s_gray >= ming && s_gray <= maxg)
{
for (int i = row - minSize; i >= 0 && i <= row + minSize && i < rows; i++)
{
for (int j = col - minSize; j >=0 && j <= col + minSize && j < cols; j++)
{
s_gray = src.at<uchar>(i, j);
m_gray = mask.at<uchar>(i, j);
if (m_gray > 0 && s_gray >= ming && s_gray <= maxg)
dst.at<uchar>(i, j) = 255;
}
}
}
}
}
}
OpenCV实现halcon的fast_threshold函数
最新推荐文章于 2024-07-21 23:16:53 发布