OpenCV의 : 연구소에 BGR 이미지를 변환 회색 공간

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/Teddygogogo/article/details/84932648

실수로 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");
}

추천

출처blog.csdn.net/Teddygogogo/article/details/84932648