(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 확장 및주의 사항
없는