OpenCV質問
Posted: 2016年7月28日(木) 18:12
横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;
}