영상처리

<C++> OpenCV에서 빈 공간 할당 후 그림 그리기 (사각형)

park__ 2022. 3. 29. 13:02
	int iImgWidth, iImgHeight;
	iImgWidth = 1280;
	iImgHeight = 960;

	Mat MatGray(iImgHeight, iImgWidth, CV_8UC1, Scalar(0));

1280 x 960 에 CV_8UC1 = 8bit 를 할당 함 Color = 0 

참고 사항

  • OpenCV에서 선언할 때는 세로, 가로 순으로 설정 해야 함. ( 960 , 1280 )
  • CV_8UC1 는 8bit 를 의미하고 흑백이다. 컬러를 나타낼 때는 CV_8UC3으로 해주고 Color 부분을 넣을 때 Scalar(0,0,0) 처럼 해주면 됨.
    uchar *pImgBuffer = MatGray.data; // uchar 형식으로 Mat 받는 방법
    int start_x, start_y, height, width, color;
    start_x = 100; 
    start_y = 200; // x, y 시작 지점 (100, 200)
    height = 200;
    width = 300; // 그리고 싶은 사각형의 크기 (300, 200)
    color = 128 // 색깔 128은 회색
    for (int y = start_y; y < start_y + height; y++)
    {
		for (int x = start_x; x < start_x +  width; x++)
		{
			pImgBuffer[x + y * MatGray.cols] = color;
		}
	}
    
	imshow("OpenCV", MatGray); //출력

출력 결과