テキスト ファイル npoints3 には、1 242 2 242 3 242 ... 900 242 という形式の座標があり、これは画像を横切る直線ですが、次のコードは直線と追加の線分を出力します。何が間違っているのかわかりません。余分な線分が表示される理由を教えてもらえますか? 前もって感謝します!
IplImage* InputImg = cvLoadImage("image.jpg", CV_LOAD_IMAGE_GRAYSCALE);
CVPoint * points = (CvPoint*)malloc(length*sizeof(CvPoint*));
FILE *fp;
fp = fopen("npoints3", "r");
for(i=1; i <= length; i++)
{
fscanf(fp, "%d", &(points[i].x));
fscanf(fp, "%d", &(points[i].y));
printf("%d %d\n",points[i].x, points[i].y);
}
for(i=1; i < length; i++)
cvLine(InputImg, points[i], points[i+1], red, 3, 1);
お返事をありがとうございます。私があなたを明確に理解していることを確認するために、私はあなたの提案の編集を投稿しました. 次のループはあなたが提案したものですか?前もって感謝します。
IplImage* InputImg = cvLoadImage("image.jpg", CV_LOAD_IMAGE_GRAYSCALE);
if (!InputImg) {
printf("Could not load Input Image");
exit(0);
}
points1 = (CvPoint*)malloc(length*sizeof(CvPoint*));
points2 = (CvPoint*)malloc(length*sizeof(CvPoint*));
points = (CvPoint*)malloc(length*sizeof(CvPoint*));
fp = fopen("points", "r");
for(i=0; i < length; i++)
{
fscanf(fp, "%d", &(points[i].x));
fscanf(fp, "%d", &(points[i].y));
}
for(i=0; i < length; i++)
{
points1[i].x = points[i].x;
points1[i].y = points[i].y;
points2[i].x = points[i+1].x; points2[i].y = points[i+1].y;
// cvLine(InputImg, points1[i], points2[i], red, 3, 1);
}
cvSnakeImage(InputImg, points, length, alpha, beta, gamma, CV_VALUE, winni, criteria, calcGradient);
for (i = 0; i <length-1; i++)
{
points1[i].x = points[i].x;
points1[i].y = points[i].y;
points2[i].x = points[i+1].x; points2[i].y = points[i+1].y;
cvLine(InputImg, points1[i], points2[i], red, 3, 1);
}