前言
在OpenCV中,在Mat中,表达图像的值是0到255,0为黑色,255为白色,而已灰度级切片对灰度图像做二值映射讲处理,给一个阈值,按这个阈值去分层,大于这个阈的赋一个值,小于赋一个值,在灰度图像中它的作用是在整个灰度级范围内将设定窗口内的灰度和其他部分分开,为了达到突出图像中具有一定灰度范围的区域。
代码:
void binaryMap(cv::Mat &src, cv::Mat &dst,int threshold)
{
if (src.channels() != 1)
{
cv::cvtColor(src, src, cv::COLOR_BGR2GRAY);
}
dst = src.clone();
int rows = dst.rows;
int cols = dst.cols;
if (dst.isContinuous())
{
cols *= rows;
rows = 1;
}
uchar *p_data_mat;
for (int j = 0; j < rows; j++)
{
p_data_mat = dst.ptr<uchar>(j);
for (int i = 0; i < cols; i++)
{
if (p_data_mat[i] > threshold)
{
p_data_mat[i] = 255;
}
else
{
p_data_mat[i] = 0;
}
}
}
}
运行结果: