// OpenCV 기본 사용법
int OCVBasicTest()
{
Mat img = imread("d:\\sample.jpg"); // color load
//CV_LOAD_IMAGE_GRAYSCALE : 0
Mat img_gray = imread("d:\\sample.jpg", 0);// gray load
//imwrite("d:\\write.jpg", img_color);
// Mat 생성
int h=img.rows, w=img.cols ;
unsigned char * img_buffer;// 이미지버퍼 포인터
img_buffer = (UCHAR*)calloc( 1, h * w *3);
Mat img2(h, w, CV_8UC3, img_buffer);//메모리 공유
//Mat img4 = Mat::zeros(h,w,CV_32FC1);//1채널 float
//Mat img5 = Mat::ones(h,w,CV_64FC3);//3채널 double
Mat img4 = Mat::ones(h,w,CV_64FC3);
// Mat 초기화
Mat img3 = img;//메모리 공유
// Mat 복사
//img4 = img; // 메모리 공유, 복사는 안함
//img4 = img.clone(); // 복사, 별도 메모리
//img.copyTo(img4); // 복사, 별도 메모리
//img.convertTo(img4, CV_8U); // 형변환 복사, 별도 메모리
// 초기화
img2 = Scalar(CV_RGB(255,0,0)); // img 모든 원소값 초기화
//img = Scalar(CV_RGB(255,255,0));
//img_gray = Scalar(CV_RGB(255,255,0));
// gray-color 변환
cvtColor(img, img4, CV_BGR2GRAY);// color -> gray
cvtColor(img_gray, img4, CV_GRAY2BGR);//gray -> color
// roi 설정
int x=10, y=10, width=100, height=100;
Rect roi(x,y, width, height);//
Mat sub_img = img(roi);//메모리공유
//Mat sub_img = img(roi).clone();//별도메모리
//글자 출력
int B=0,G=0, R=0;
Scalar color(B,G,R);
int thickness=1; // line thickness
//트랙바
namedWindow("track win1", 1);
createTrackbar( "track", "track win1", &nTrack, 100, on_trackbar1 );
//콜백함수 : void on_trackbar1( int, void* )
//마우스
//setMouseCallback("mouse", on_mouse1, 0);
//콜백함수 : void on_mouse1(int event, int x, int y, int flags, void* param) { }
char str[256];
while(1)
{
//namedWindow("win");
sprintf(str, "[ %d ]", nTrack);
putText(img4, str, Point(2,20), FONT_HERSHEY_SIMPLEX, 1., color, thickness);
imshow( "win", img4);
//Sleep(30);
//char ch = waitKey(); // 무한 대기
char ch = waitKey(30); // 30 msec 대기
if(ch == 27) break; // ESC key, SAPCE : 32
}
destroyWindow("win");
destroyAllWindows();
return 1;
}
//
docs.opencv.org/opencv_cheatsheet.pdf
'Code > Desktop' 카테고리의 다른 글
[prj] HTML 태그, 속성 정리 삭제 유틸 프로그램 (0) | 2014.01.15 |
---|---|
콘솔 프로그램에서 끝내기전에 멈추는 방법 (0) | 2014.01.14 |
CPP HTML Parser (0) | 2014.01.14 |
[OpenCV] Mat 사용법 - 기본 연산 (0) | 2014.01.08 |
Win7에서 VC6 디버깅 문제 해결 (0) | 2014.01.08 |