opencv 图像处理函数

OpenCV

 

영상읽기,출력저장

cvLoadImage()함수를 이용하여 읽어온 영상을 화면에 출력하기 위해서는 

cvNamedWindow()함수를 이용하여 영상 출력을 위한 윈도우를 만들고 

cvShowImage()함수를 이용하여 지정된 윈도우에 영상을 출력한다.

IplImage*cvLoadImage(filename,iscolor);

Iscolor>0 컬러 영상으로 변환하여 로드한다.

Iscolor=0흑백 영사으로 변환하여 로드한다.

Iscolor<0  원래 영상으로 로드한다.

 


Iplimage*image;

Image=cvLoadImage(“vision.jpg”,-1);

 

 

lcvNamedWindow(윈도우의이름,flag);

flag:CV_WINDOW_AUTOSIZE=1  원도우이 영상의 크기에 맞춘다.

flag:  0  크기 조절을 할 수 있다.

 

 cvShowImage(윈도우의이름,CvArr*image);

image: 출력할 영상을 나타내며 cvLoadImage() 함수에 의해 로드된 영상을 지정한다

 

cvWaitKey(delay)

delay<=0: 영상이 출력된 상태에서 무한히 키보드 기다리다.

delay(1000):1초 동안 기다리다.

 

cvReleaseImage(&image)

메모리에 로드된 영상을 메모리에서 해제한다.

 

 

cvCreateImage

Ip1Image*Image= cvCreateImage (  size,  depth, channels  );

Ip1Image*Image= cvCreateImage ( cvSize ( 640 , 480 ) , IPL_DEPTH_8U , 1 );

①영상의 크기size:

     cvSize(width,height)  :크기 직접 지정한다

cvGetSize() : 특정한 영상의 크기

 

②영상 데이터의 깊이를 지정한다. 1철널 영상인 경우는 픽셀의 깊이가 되고 3채널 영상인 경우 각 채널의 깊이가 된다.

IPL_DEPTH_8U:      8 비트 unsigned integer(0~255) 즉,0과 255사이256개의 정수 값으로 표현하계다는 의미

IPL_DEPTH_8S:     8 비트 signed integer(-128~127)

IPL_DEPTH_16U:    16 비트 unsigned integer

IPL_DEPTH_16S:    16 비트 signed integer

IPL_DEPTH_32S:    32 비트 signed integer

IPL_DEPTH_32F:    32 비트 floating-point number

IPL_DEPTH_64F:    16 비트 floating-point number

 

③Channels: 픽셀 당 채널 수를 지정한다

흑백영상: 1

컬러영상: 3

 

cvSplit(CvArr*src,  CvArr*dst1,  CvArr*dst2, CvArr*dst3);

                  src:  다채널 영상을 나타낸다 원영상=dst1+dst2+dst3

dst1,dst2,dst3:  단일 채널 영상을 나타난다cvSaveImage(char*filename, CvArr*image);

filename: 저장할 파일이름을 나타낸다.

예:                             Ip1image*image;

cvSaveImage(“vision.jpg”,image);

 

 

 

영상데이터에직접접근하기

data위치:

흑백:              data[i*width + j ];

컬러:               data[i*width*channels + j*channels + k ]

 RGB영상을흑백영상으로변환하는공식

NTSC표준:     I= 0.299*R + 0.587*G + 0.114*B 

대부분 적용:                                  I= 0.333*R + 0.333*G + 0.333*B

 

픽셀기반영상처리

산술연산

cvAddS(CvArr*src,  CvScalar value,  CvArr*dst , CvArr*mask(Null))

상수값을 더하기 위해 사용하는 함수.

src: 원영상을 나타난다

value:

        CV_RGB(60,69,60);

dst: 목적 영상을 나타난다

예: cvAdd ( src, CV_RGB(60,60,60), dst ,NULL);

cvSubS( CvArr*src, CvScalar value,  CvArr*dst,  CvArr*mask(NULL))

상수 값을 빼기 위해 사용하는 함수

cvMul(CvArr*src1,  CvArr*src2,  CvArr*dst, double scale=1)

두 영상 간의 곱셈을 수행하는 함수이다

src1: 첫번째 영상을 나타낸다

src2: 두 번째  영상을 나타낸다.

dst: 목적영상을 나타낸다

scale: 곱하고자 하는 상수를 나타낸다.

예:                   cvMul(src1, src2, dst,1.5)

 cvSet(CvArr*arr,CvArr* value, CvArr* mask=NULL);

행렬 혹은 영상을 주어진 원소 혹은 픽셀값으로 채우기 위해 사용하는 함수이다.

arr:목적영상을 나타낸다

value: 채우고자 하는 상수이며 상수값은 CvScalar 자료형을 갖는 CV_RGB와 cvScalarAll() 함수를 사용하여 지정한다.

영상간의산술연산

cvAdd( CvArr*src1, CvArr*src2,  CvArr* dst,  CvArr*mask=NULL)

두 영상 간의 덧셈을 수행하는 함수이다

cvSub(CvArr*src1, CvArr*src2,  CvArr* dst,  CvArr*mask=NULL)

두 영상 간의 뺄셈을 수행하는 함수이다

cvDiv(CvArr*src1,  CvArr*src2, CvArr* dst,  double scale = 1)

두 영상 간의 나눗셈을 수행하는 함수이다


영상 반전 cvNot(CvArr*src1,  CvArr* dst );

이진 영상 ( binary image           )

흰색(255) 과 검은색(0) 으로 이루어진 영상이다.

F(X)=  255,     x>=T;

       0,      x<T;

T:threshold

CvThreshold(CvArr*src, CvArr* dst,  double threshold,        double maxValue,

CvthreshTypetype)

영상에서 이진화하기 위한 함수이다

Threshold:임계값을 나타낸다.

maxValue:픽셀의 최대 명암값을 나타낸다.

Type: 이진화 방식을 결정한다.

이진화 방식:

CV_THRESH_BINARY:   임계값 초과: 255,                 임계값 이하:

CV_THRESH_BINARY_INV:           임계값 초과: 0,    임계값 이하: 255

CV_THRESH_TRUNC:    임계값 초과: 임계값,임계값 이하: 원래 픽셀값

CV_THRESH_TOZERO:  임계값 초과: 원래픽셀값, 임계값 이하: 0

CV_THRESH_TOZERO_INV:          임계값 초과: 0,임계값 이하: 원래 픽셀값

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值