관리 메뉴

코코야이야기

[c++] OpenCV 트랙바추가 본문

프로그래밍/OpenCV

[c++] OpenCV 트랙바추가

코코야 2015. 9. 22. 16:00
반응형

소스코드

//트랙바 추가

#include "cv.h"
#include "highgui.h"
void on_change(int pos =0);
IplImage *srcImage, *dstImage;

int main()
{
 if((srcImage = cvLoadImage("test.jpg", CV_LOAD_IMAGE_GRAYSCALE)) ==NULL)
  return -1;

 dstImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U,1); //흑백만 가능

 cvNamedWindow("srcImage",CV_WINDOW_AUTOSIZE);
 cvShowImage("srcImage", srcImage);

 cvNamedWindow("dstImage",CV_WINDOW_AUTOSIZE);
 cvShowImage("dstImage", dstImage);

 int pos = 100;
 on_change(pos);

 cvCreateTrackbar("threshold","dstImage",&pos,255,on_change);
 //cvCreateTrackbar(트랙바이름, 트랙바를 붙일 윈도우 이름,슬라이더의 위치, 슬라이더의 최대 위차값, 트랙바의 슬라이더가 변경될때마다 자동호출되는 핸들러함수)

 cvWaitKey(0);

 cvDestroyAllWindows();
 cvReleaseImage(&dstImage);
 cvReleaseImage(&srcImage);
}


//trackbar callback to threshold the image gray value
void on_change(int pos)
{
 //Direct TresholdingcvNamedWindow("srcImage",CV_WINDOW_AUTOSIZE);
 cvShowImage("srcImage", srcImage);

 int x, y, s, r;
 int nTreshold = pos;
 for(y=0;y<srcImage->height;y++)
  for(x=0;x<srcImage->width;x++)
  {
   r = cvRound(cvGetReal2D(srcImage,y,x));

   if(r>nTreshold)
    s=255;
   else
    s=0;
   cvSetReal2D(dstImage,y,x,s);
  }
  cvShowImage("dstImage",dstImage);
}

 

 

출력영상

 

반응형

'프로그래밍 > OpenCV' 카테고리의 다른 글

[c++] OpenCV 직선검출  (0) 2015.09.23
[c++] OpenCV 영상엣지검출  (0) 2015.09.23
[c++] OpenCV 도형그리기5  (0) 2015.09.22
[c++] OpenCV 문자열출력2  (0) 2015.09.21
[c++] OpenCV 문자열출력1  (0) 2015.09.21
Comments