ROI(관심 영역) 설정과 영상 정보 출력
2020. 9. 28. 21:59ㆍOpen CV
OpenCV로 ROI(관심 영역)설정하는 방법은 엄청 쉽습니다.
cvLoadImage의 경로는 자신의 사진이나 영상데이터가 있는 곳으로 바꿔 주세요.
#include <opencv\highgui.h>
#include <opencv\cv.h>
using namespace cv;
void main ()
{
IplImage * Img = cvLoadImage ("C:/Users/Documents/Visual Studio 2010/Projects/openCV test/openCV test/images/tx.jpg");
IplImage * Img_copy = (IplImage*)cvClone(Img);
cvSetImageROI(Img_copy, cvRect(100,150,140,100));
cvShowImage("Origin", Img);
cvShowImage("ROI", Img_copy);
cvWaitKey(0);
cvReleaseImage(&Img);
cvReleaseImage(&Img_copy);
cvDestroyWindow("Oorigin");
cvDestroyWindow("ROI");
}
이렇게 하면 제가 원하는 사진의 영역을 딱 돌여내어 표시해 줍니다.
새로운 팝업창으로 말이죠!
나는 여기서 지난 포스팅 https://monorailcode.tistory.com/13 의 영상 정보까지 출력하고 싶다면,
#include <opencv\highgui.h>
#include <opencv\cv.h>
#include <opencv2\core\core.hpp>
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;
void main ()
{
uchar*data;
IplImage*image;
IplImage * img1 = cvLoadImage ("C:/Users/Documents/Visual Studio 2010/Projects/openCV test/openCV test/images/tx.jpg");
Mat ROI_mat;
IplImage *img3;
img3 = (IplImage*)cvClone(img1);
ROI_mat =cvarrToMat(img3);
Rect myROI(100,160,160,180); //100, 160의 좌표에 160*180크기의 네모 그리기
Mat crop =ROI_mat(myROI);
IplImage img2=crop;
//-------------------------------------------------------------img2(=ROI)에 대한 정보출력-----------------------
printf("origin =%d\n", img2.origin);
printf("width =%d\n", img2.width);
printf("height=%d\n\n", img2.height);
//------------------------------------------------------------------img3에 대한 정보 출력-----------------------------
data=(uchar*)img3->imageData;
printf("number of channels = %d\n", img3->nChannels);
printf("origin =%d\n", img3->origin);
printf("width =%d\n", img3->width);
printf("height=%d\n", img3->height);
printf("widthStep = %dbytes(width x channels).\n", img3->widthStep);
printf("depth =%d bits\n", img3->depth);
printf("imageSize =%d bytes (width x height x channels) \n", img3->imageSize);
printf("imageData = %d\n", data[100]);
cvShowImage("Origin", img1);
cvShowImage("ROI", &img2);
cvWaitKey(0);
cvReleaseImage(&img1);
//cvReleaseImage(&img2);
cvDestroyWindow("origin");
cvDestroyWindow("ROI");
}
이렇게 되면 우리는 아래 사진과 같은 결과 값을 얻을 수 있어요.
원래 이미지 + ROI 이미지 + 영상의 컬러 정보 3개의 창이 뜰겁니다.
원본 사진은 결과 값에서 생략했지요 ^^
'Open CV' 카테고리의 다른 글
단일영상에서의 산술연산 (0) | 2020.09.28 |
---|---|
히스토그램 코드로 확인 (0) | 2020.09.28 |
컬러 영상 출력해보기(channel, origin, width, height, widthStep, depth, imageSize, imageData) (0) | 2020.09.28 |
히스토그램 (0) | 2020.09.28 |
컬러 영상 (0) | 2020.09.28 |