int main(int argc, char** argv)
{
Mat img = imread("1.png");
for (int j = 0; j < img.cols; j++)
{
for (int i = 0; i < img.rows - 1; i++)
{
//由白到黑的边界
if ((img.at<Vec3b>(i, j)[0] == 255) && (img.at<Vec3b>(i + 1, j)[0] == 0) &&
(img.at<Vec3b>(i, j)[1] == 255) && (img.at<Vec3b>(i + 1, j)[1] == 0) &&
(img.at<Vec3b>(i, j)[2] == 255) && (img.at<Vec3b>(i + 1, j)[2] == 0))
{
cout << j << "," << i << endl;
//下一位比上一位大10以上或小10以上定义为不好 (差分)
if ((i - (i+1) > 10) || (((i+1) - i) > 10))
{
cout << "数据不好,请重新采样!";
}
}
}
//break;
}
return 0;
}
如图
j=0时,i=142
i+1只是在i的数值基础上加1
怎么表示下一位数值,让i(上一位)和下一位数值比较?
是不是要计算相邻列白到黑边界的高度差:
建议不要嵌套循环,尽量抽取成函数,有利于减少嵌套,整理逻辑,提高可读性
上面代码可重构为: