실수로 RGB 공간 변환에 발견 그냥 시작 OpenCV의, 나는 책의 우주 실험실을 확장, 몇 가지 정보를 보였다.
간단하고 조잡한 판독 픽셀 RGB, 회색, 랩 채널 정보에있어서, img.at도있다 <UCHAR> (Y, X).
실험실 표준 변환이 최종 매핑을 요구하면서 이미지가 순차적에서 OpenCV BGR 대신 RGB를 저장합니다.
#INCLUDE <opencv2 / opencv.hpp>
당신이 이력서에서 함수, 표준 네임 스페이스를 호출 컴파일러 // 지침
, 사용하여 네임 스페이스 CV
사용하여 네임 스페이스 표준;
INT 주 ()
{
이력서 :: 매트 img_rgb, img_rgb1, img_gray, img_lab, img_canny;
namedWindow ( "번째 윈도", 이력서 :: WINDOW_AUTOSIZE);
namedWindow ( "(window 2)이", 이력서 :: WINDOW_AUTOSIZE);
namedWindow ( "Window3", 이력서 :: WINDOW_AUTOSIZE);
namedWindow ( "Window4", 이력서 :: WINDOW_AUTOSIZE);
namedWindow ( "Window5", 이력서 :: WINDOW_AUTOSIZE);
img_rgb = imread ( "D : / 데스크탑 / 그림 / 컬러 카드 RGBCMYK.tif는", -1);
IF는 (img_rgb.empty ()) 반환 -1;
CV : imshow (이하 "번째 윈도", img_rgb);
// 읽기 화소 (Y, X) 값 BGR 취하여
제 1 픽셀을 읽어 // (0,0)의 값이 B의
표준 : COUT << "ㄴ thers는 "<< (부호 INT) img_rgb.at < UCHAR> (0, 0) : STD << ENDL;
// 제 1 픽셀을 읽어 g의 (0,1)의 값
표준 : COUT << "g의 thers는 "<< (부호 INT) img_rgb .at <UCHAR> (0 ,. 1) : STD << ENDL;
// 제 1 픽셀을 판독 (0,2)의 R 값의
표준 : COUT << "R의 thers는 "<< (부호 INT) img_rgb.at <UCHAR> (0 , 2) << 표준 : ENDL << 표준 : ENDL;
:: CV의 cvtColor (img_rgb, img_gray, CV : COLOR_BGR2GRAY )
CV : imshow ( "(window 2)이"img_gray);
// 첫 번째 행을 판독, 첫 번째 열의 화소 농담 값의
표준 : COUT << " Thers는 Gray1된다 "<< (부호 INT) img_gray.at <UCHAR> (0, 0) : STD << ENDL;
// 첫 번째 행의 화소 열의 계조 값 판독
표준 : COUT <를 < "gray2의 thers는"<< (부호 INT) img_gray.at <UCHAR> (0, 1) << 표준 : ENDL << 표준 : ENDL;
:: CV의 cvtColor (img_rgb, img_lab, CV : COLOR_BGR2Lab )
CV : imshow ( "Window3"img_lab),
제 1 화소를 판독 //는 (0,0) 값 (L)은, 실제 맵핑되어야 범위 [0,255]에서, L은 이론적 범위 [0,100]
STD :: COUT << "패 Thers는"<< (INT) (img_lab.at <UCHAR> (0, 0) * 100/255) < <STD :: ENDL는;
// 매핑해야 할 값을 첫 번째 화소 (0,1)를 판독 실제 범위는 이론적 범위 [-128,127]는 [0,255]이며
STD :: COUT < < "는 Thers 인"<< (INT) img_lab.at <UCHAR> (0 ,. 1) - 128 << STD :: ENDL,
제 1 화소를 판독 // (0.2) B 값, 매핑은, 실제의 범위는 B [-128,127] 이론적 범위, [0255]은 필요한
STD :: COUT << "ㄴ Thers는"<< (INT) img_lab.at <UCHAR> (0, 2) - 128 << 표준 : ENDL << STD :: ENDL;
:: CV의 cvtColor (img_lab, img_rgb1, CV : COLOR_Lab2BGR) ;
CV : imshow ( "Window4"img_rgb1)는,
제 1 화소를 판독 // 리터의 (0,0)의 값
표준 : COUT << "B1의 Thers는"<< (INT) img_rgb1.at <UCHAR> (0, 300) : STD << ENDL;
// 제 1 픽셀을 판독 (0,1)은 값
표준 : COUT << "G1의 Thers는"<< (INT) img_rgb1.at <UCHAR> (0, 301) : STD << ENDL;
//는 B 값의 제 1 화소 (0,2) 판독
성병 : : COUT << "R1의 thers이다 : "<< (INT) img_rgb1.at <UCHAR> (0, 302) << 표준 : ENDL << 표준 : ENDL;
CV : 캐니 (img_gray, img_canny, 10, 100 (3)에 해당);
이력서 : imshow ( "Window5", img_canny);
표준 : COUT << "화소 thers는"<< (부호 INT) img_canny.at <UCHAR> (0, 0) << 표준 : ENDL;
표준 : COUT << "화소 thers는"<< (부호 INT) img_canny.at <UCHAR> (0, 1) << 표준 : ENDL;
표준 : COUT << "화소 thers는"<< (부호 INT) img_canny.at <UCHAR> (0, 2) << 표준 : ENDL;
waitKey (0);
destroyWindow ( "번째 윈도");
destroyWindow ( "(window 2)이");
destroyWindow ( "Window3");
destroyWindow ( "Window4");
destroyWindow ( "Window5");
}