※ ChatGPTを利用し、要約された質問です(原文:ピクセルの座標を取得するには)
ピクセルの座標を取得する方法
このQ&Aのポイント
OpenCVを使ってピクセルの座標を取得する方法について教えてください。
輪郭抽出のプログラムでうまくいかないところがあります。頂点を保存する方法を教えてください。
ピクセルの座標を取得するための修正方法について教えてください。
OpenCVを使っています。
輪郭抽出のプログラムでうまくいかないところがあり困っています。
もし原因や修正方法をおわかりの方がいらしたらぜひアドバイスいただけると助かります。
11×11ピクセルの画像(CV_8UC3)に、一本 上から下に伸びた輪郭線があります。
この輪郭線を境に白黒に塗りつぶしています。
左上から右へ走査し
「もしピクセルが白なら黒にする」
として
処理された画像は輪郭線で白黒に塗り分けることはできました。
このとき、輪郭線の「頂点」を保存したいのですが、うまくいきません。
頂点を表示させると以下のようになってしまいます。
0,0
0,1
0,2
0,3
:
0,10
どこを直すとうまくいくでしょうか。
=========
while (k < 11){ // k = y軸
tate[k] = k; // y方向
cb = lap_img->imageData[lap_img->widthStep * k + j * 3];
while(j < 11 && cb == -1){ // j = x軸
lap_img->imageData[lap_img->widthStep * k + j * 3] = 0;
lap_img->imageData[lap_img->widthStep * k + j * 3 + 1] = 0;
lap_img->imageData[lap_img->widthStep * k + j * 3 + 2] = 0;
lap_img->imageData[lap_img->widthStep * k + j * 3 + 3] = 0;
lap_img->imageData[lap_img->widthStep * k + j * 3 + 4] = 0;
yoko[k] = j; // x方向
if (top == j || top < j){
top =j;
}
j = j + 1;
cb = lap_img->imageData[lap_img->widthStep * k + j * 3];
printf("%d, %d\n", tate[k],top);
j = 0;
k = k + 1;
}
}
お礼
kmeeさま 2度も長い丁寧なコメントをくださいまして、本当にありがとうございました! 間違いがわかり、ようやく、ようやくまともに動きました。 もちろん、ピクセルの座標もまともに取得できるようになりました。 ひとつひとつどこがどうおかしいか、自分で自覚して確認できるアドバイスを くださいまして、本当にありがとうございました。 もう、毎回ですけれども、本当に感謝しています! ありがとうございました!!!