基本算子
包括:滤波,亮度,通道,色彩转换,Cut,Split,二值化。
下面是简单的二值化列子,其他的类似,不再截图。
第一步:打开软件
第二步:“新建”,“+”,选择第“1”步,双击“读取”算子,选择图片以及彩色模式
第三步:“+”,选择第“2”步,双击“二值化”算子,选择需要的二值化的方式。
第四步:点击“全部”,会显示一张opencv的图片,你可以看到相应的效果。这里选择的是threshold模式的Binary,你可以根据需要选择其他方式。
所有的算法都在AL目录下面,所有的算法都在相应类的函数convert里,列如“二值化”对应的是ALBThreshold,您如果想使用相关的处理,直接复制相应的代码即可。
void CALBThreshold::convert()
{
if (m_pStepItem == NULL) return;
try
{
CALSIBThreshold* pStepItem = (CALSIBThreshold*)m_pStepItem;
int nFs = pStepItem->GetItemFs();
if (nFs == 0)//二值化 threshold函数
{
Mat temp;
cvtColor(m_srcMat, temp, COLOR_BGR2GRAY);
int nPara1 = pStepItem->GetItemPara(0);
if (nPara1 == 0)
{
threshold(temp, m_dstMat, 170, 255, THRESH_BINARY);
}
else if(nPara1 == 1)
{
threshold(temp, m_dstMat, 0, 255, THRESH_OTSU);
}
}
else if (nFs == 1)//二值化 条件判断语句
{
Mat temp;
cvtColor(m_srcMat, temp, COLOR_BGR2GRAY);
int threshval = 170;//设定阈值
m_dstMat = threshval < 100 ? (temp < 170) : (temp > 170);//????
}
else if (nFs == 2)//自适应二值化 adaptiveThreshold
{
Mat temp;
cvtColor(m_srcMat, temp, COLOR_BGR2GRAY);
int nPara1 = pStepItem->GetItemPara(2);
if (nPara1 == 0)
{
adaptiveThreshold(temp, m_dstMat, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 11, 0);
}
else if (nPara1 == 1)
{
adaptiveThreshold(temp, m_dstMat, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 11, 0);
}
}
SetDstType(AL_DST_Mat_One);
}
catch (...)
{
}
}