- 締切済み
c++でのプログラミングについて
画像の中心を求める式はわかるんですが それのプログラムの書き方がわかりません。 ヒントやサンプルコードを教えてください s- ちなみに x = 1/N∑xi y = 1/N∑yi これの(x,y) です。 Nは求める画像の画素群です。 お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
画像の重心を求めたいのではないですか.画像とは別に画素群についての定義があるか,もしくはxiとyiに画素値が係数として付きませんか?「Nは求める画像の画素群です」という説明だけでは,No.1さんの言う通り,単にx,y座標の平均を求めるだけの式にしか見えません. 下記の(OpenCVを使う)コードは条件付きで質問の式と等しくなります.画素値 I(x,y) が 0 または 1 の二値であり,重心を求める画素群が I(x,y) == 1 となる全ての画素 (x, y) であるなら. IplImage* image = cvLoadImage("test.png", CV_LOAD_IMAGE_GRAYSCALE); double sumx = 0, sumy = 0, N = 0; uint8_t I; for (int y = 0; y < image->height; y++) { for (int x = 0; x < image->width; x++) { I = CV_IMAGE_ELEM(image, uint8_t, y, x); sumx += I * x; sumy += I * y; N += I; } } std::cout << "X = " << sumx / N << std::endl; std::cout << "Y = " << sumy / N << std::endl;
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
要するにx,y各座標の平均値を求めてるだけみたいですが、何がわからんのですか?