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;
int a[1000] = { };
a[j] = i;
printf("a[%d]=%d\n", j, a[j]);
//判断
if ((a[j] < (a[j + 1] - 10)) || (a[j] > (a[j + 1] + 10)))//后一位比前一位大10以上或小10以上定义为差{
cout << a[j + 1];
cout << "数据不好,请重新采样!";
}
}
}
//break;
}
return 0;
}
为什么a[j+1]全是0?a[j]=i的下一个数值怎么表示?“后一位比前一位大10以上或小10以上”怎么表示?
答:肯定全是 0。每次进入内层循环
a
都被重新定义,之后a[j+1]
没被赋值答:没有理解
答:
if ((a[j] < (a[j + 1] - 10)) || (a[j] > (a[j + 1] + 10)))
表达式是对的