原理
从输入图像中选取灰度值g满足以下条件的像素:
minGray < g < maxGray
一、Halcon函数原型
threshold(Image : Region : MinGray, MaxGray : )
参数说明:
Image :HImage类型,输入图像,即待分割图像。
Region :HRegion类型,输出区域,即分割后的区域。
MinGray :输入灰度低阈值,0~255。
MaxGray :输入灰度高阈值,0~255,需大于MinGray 。
二、C++实现
void Threshold(cv::Mat &src, cv::Mat &dst, int lowThresh, int highThresh)
{
if(src.empty())
{
std::cout<<"src is empty"<<std::endl;
return;
}
dst = cv::Mat::zeros(src.size(), src.type());
double t = (double)cv::getTickCount();
for(int i = 0; i < src.rows; i++)
{
uchar *srcPt = (uchar*)src.data + i * src.step;
uchar *dstPt = (uchar*)dst.data + i * dst.step;
for(int j = 0; j < src.cols; j++)
{
uchar pixel = *srcPt++;
if(pixel > lowThresh && pixel < highThresh)
*dstPt = 255;
dstPt++;
}
}
t = ((double)cv::getTickCount() - t) / cv::getTickFrequency()*1000; //获得时间,单位是毫秒
cout <<"耗时:"<< t<<"ms"<<endl;
}
三、C++实现效果
原图:
C++实现效果: