OpenCV의 009 --- 색 공간과 색 공간 변환

(1) 지식 전에 준비

각각의 컬러 범위에 대응

2 주로에서 OpenCV API를 사용

/ ** @brief 하나 개의 색 공간에서 다른 이미지를 변환합니다.

@param SRC 입력 이미지 : 8 비트 부호, 16- 비트 부호 (CV_16UC ...), 또는 단 정밀도
부동 소수점.
SRC와 같은 크기와 깊이의 파라미터 : DST 출력 이미지.
@param 코드 색 공간 변환 코드 (#ColorConversionCodes 참조).
대상 이미지의 채널 @param dstCn 번호; 파라미터가 0 인 경우의 수가
채널 SRC 코드로부터 자동으로 도출된다.

imgproc_color_conversions @ref @see
* /

CV_EXPORTS_W 공극 cvtColor (InputArray SRC, DST OutputArray, INT 코드 INT dstCn = 0 );


/ ** @brief 검사 어레이 요소는 두 개의 다른 배열의 요소 사이에 놓여있는 경우.

즉, DST (I)는 SRC (I)가 내 경우 255 (모두 1 -bits)로 설정되고
, 그렇지 않으면 ... 상자와 공 지정된 1D, 2D, 3D,.

하부 및 / 또는 상부 경계 파라미터가 스칼라 인 경우, 인덱스
, 상기 식 lowerb 및 upperb에서 (I)을 생략한다.
@param 먼저 입력 배열 SRC.
파라미터 : lowerb 포함 낮은 경계 배열 또는 스칼라.
상부 경계를 포함한 배열 또는 스칼라 upperb @param.
SRC 및 CV_8U 형태 같은 크기의 파라미터 : DST 출력 배열.
* /

CV_EXPORTS_W 공극 inRange (InputArray SRC, InputArray lowerb, 
                          InputArray upperb, OutputArray DST);

/ ** @brief는 정규화 박스 필터를 사용하여 이미지를 흐리게.

이 함수는 커널을 사용하여 이미지를 부드럽게 :

@param SRC 입력 이미지; 이는 독립적으로 처리되는 채널의 수를 가질 수 있지만,
깊이가 CV_8U, CV_16U, CV_16S, CV_32F 또는 CV_64F이어야한다.
SRC와 동일한 크기와 유형의 파라미터 : DST 출력 이미지.
@param 커널 크기를 흐리게 ksize.
@param 앵커 기준점; 기본값 점 (-1, -1) 앵커가 커널에 있음을 의미
센터입니다.
화상 이외의 화소를 외삽하는데 사용 @param borderType 테두리 모드, 참조 #BorderTypes
boxFilter, bilateralFilter, GaussianBlur, medianBlur @sa을
* /

CV_EXPORTS_W 무효 흐림 (InputArray SRC, OutputArray DST, 
                        크기 ksize, 포인트 앵커 = 포인트 (- 1 , - 1 ),
                         INT borderType = BORDER_DEFAULT);

/ ** @brief은 중앙값 필터를 사용하여 이미지를 흐리게.

@note 메디안 필터가 경계 화소에 대응하는 내부 #BORDER_REPLICATE를 사용 #BorderTypes 참조

입력 파라미터 : SRC 1-, 3-, 또는 4- 채널 영상; ksize 3 또는 5 인 경우, 상기 이미지 깊이되어야
CV_8U가 CV_16U 또는 CV_32F이 큰 구멍 크기를 위해, 단지 CV_8U 수있다.
SRC와 동일한 크기와 유형의 파라미터 : DST 처 어레이.
@param ksize 개구 선형 크기; 그것은 예를 들어, 홀수 및 1보다 커야 : 3, 5, 7 ...
@sa bilateralFilter는, boxFilter 흐림, GaussianBlur
* /

CV_EXPORTS_W 무효 medianBlur (InputArray SRC, OutputArray DST, INT ksize);

3 프로그램 코드

사용법 #include " opencv2의 \의 opencv.hpp " 
#INCLUDE <iostream> 은 USING 공간 STD]
 은 USING 스페이스 ; CV INT 본체 ( 의 INT 는 argc, 문자 ** argv와) 
{ 
    SRC에 매트 = imread ( " program_wwx \\ \\ \\ CVworkstudy : G를 Yanxishe 140시간 ZhaiZhigang140 \\ lena.jpg \\ " );
     IF (src.empty ()) 
    { 
        의 printf는 ( " N- \ ... 이미지를로드 할 수 없습니다 " );
         반환 - . 1 ; 
    } // 색 공간 변환

  



    
    매트 yuvImg, hsvImg, ycrcbImg; 
    cvtColor (SRC, yuvImg, CV_BGR2YUV); 
    cvtColor (SRC, hsvImg, CV_BGR2HSV); 
    cvtColor (SRC, ycrcbImg, CV_BGR2YCrCb); 
    // 图像显示 
    imshow ( " YUV " , yuvImg); 
    imshow ( " HSV " , hsvImg); 
    imshow ( " 에 YCrCb " , ycrcbImg); 

    매트 getColorImg, getMask, getMask1; 
    getColorImg = imread ( " G : \\ CVworkstudy \\ program_wwx \\研习社140课时\\ ZhaiZhigang140 \\ myPhoto.jpg " );
    // imshow ( "MyPhoto", getColorImg);
    cvtColor (getColorImg, getColorImg, CV_BGR2HSV) // 색상 추출이 HSV 색 공간을 변환해야
     // (. 모든 -Bits 1) 즉, DST합니다 (I)가 SRC합니다 (I) (가) 이내 인 경우 255로 설정 IS
     // 지정된 . 1D, 2D, 3D, ... 0 달리 박스 
    inRange (getColorImg 스칼라 ( 100 , 43이고 , 46는 ) 스칼라 ( 124 , 255 , 255 ), getMask) // 청색 범위는 255로 변환된다 다른은 0 
    ((getMask, getMask1 크기 흐림 5. , 5. )); // 의미 흐림 필터 것이다 에지 
    imshow ( " getMask1 " , getMask1)를;
    medianBlur (getMask, getMask, 5. ); // 에지 프로파일에 거의 영향을 메디안 필터링 
    imshow ( " GetMask " , getMask) 

    waitKey은 ( 0 )
     돌려  0 ; 
}

4 개 실행 결과

5 확장 및주의 사항

없는

추천

출처www.cnblogs.com/Vince-Wu/p/11119131.html