ページ 11

OpenCV質問

Posted: 2016年7月28日(木) 18:12
by misty
横M、高さNのフィールドに半径Cの円を描いた場合、
何個書いたか調べるプログラムを作りたいです。
よろしくお願いいたします。

コード:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc_c.h>
#include <stdio.h>


int main(int argc, char **argv)
{
	int M, N, C;
	int keyInput;
	double R = sqrt(3);
	int x, y;
	


	//printf("x=%d,xx=%d,y=%d,yy=%d", x, xx, y, yy);
	printf("M=");
	scanf("%d", &M);
	printf("N=");
	scanf("%d", &N);
	printf("C=");
	scanf("%d", &C);

	

	IplImage *image = cvCreateImage(cvSize(M, N), IPL_DEPTH_8U, 3);
	IplImage *image2 = cvCreateImage(cvSize(M, N), IPL_DEPTH_8U, 3);
	IplImage *image3 = cvCreateImage(cvSize(M, N), IPL_DEPTH_8U, 3);
	cvSet(image, cvScalarAll(0), 0);
	cvSet(image2, cvScalarAll(0), 0);
	cvSet(image3, cvScalarAll(0), 0);

	
	//cvRectangle(image, cv::Point(0,0), cv::Point(M,N), cv::Scalar(255, 255, 255), 1, 4);
	
	while (1){
		for (x = C; x+C< M; x += 2 * C){
			for (y = C; y < N; y += 2 * C){
				cvCircle(image2, cv::Point(x, y), C, cvScalarAll(255), 1, 8, 0);
			}
		}


		for (x = C; x+2*C < M; x += 2*C){
			cvCircle(image, cv::Point(x, C), C, cvScalarAll(255), 1, 8, 0);
			for (y = C+R*C; y+C < N; y+=(R*C)*2){

				cvCircle(image, cv::Point(x, y+C*R), C, cvScalarAll(255), 1, 8, 0);
				cvCircle(image, cv::Point(x+C, y), C, cvScalarAll(255), 1, 8, 0);
			}
		}

		for (x = C; x< M; x += (R*C)*2){
			for (y = C; y < N; y += 2 * C){
				cvCircle(image3, cv::Point(x,y), C, cvScalarAll(255), 1, 8, 0);
			}
		}

		for (x = C+C*R; x+C< M; x += (R*C)*2){
			for (y = C+C; y+C < N; y +=C+C){
				cvCircle(image3, cv::Point(x, y), C, cvScalarAll(255), 1, 8, 0);
			}
		}

		



		//cvShowImage("window", image);
		cvShowImage("window", image);
		cvShowImage("window2", image2);
		cvShowImage("window3", image3);
		keyInput = cvWaitKey(1);
		if ((keyInput & 255) == 27){
			break;
		}
		continue;
		
	}
	return 0;
}

Re: OpenCV質問

Posted: 2016年7月29日(金) 13:50
by usao
話が全くわからない.
自分で描いたんだから,描いた個数は既知なので,わざわざ後から調べるまでもないのでは.
例えば,円を1個書くごとにカウントアップでもしとけばいいのでは.
オフトピック
そういうことではなくて
「未知の個数の円が描かれた画像を入力されたときにどうの」という認識ぎみな方面の話なのであれば,

・円を描くコードらしきものが提示されている意味(意義)が全くわからない.
・問題の定義は?
 何が既知の条件として与えられる? 円の描かれ方に制約はあるのか? 等々
・で,今現在何に困ってるの?

という感じです.

Re: OpenCV質問

Posted: 2016年7月29日(金) 23:20
by みけCAT
misty さんが書きました:横M、高さNのフィールドに半径Cの円を描いた場合、
何個書いたか調べるプログラムを作りたいです。
なるほど、すごいですね。
ところで、何か質問はありますか?
misty さんが書きました:よろしくお願いいたします。
何をお願いするのですか?