OpenCVの:ラボ、灰色の空間にBGR画像を変換

免責事項:この記事はブロガーオリジナル記事です、続くBY-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>

あなたはstd名前空間、CV内の関数を呼び出すコンパイラに//指示に従って
、使用する名前空間CV
使って名前空間std;

INTメイン()
{
    CV ::マットimg_rgb、img_rgb1、img_gray、img_lab、img_canny。
    namedWindow( "ウィンドウ1"、CV :: WINDOW_AUTOSIZE)。
    namedWindow( "ウィンドウ2"、CV :: WINDOW_AUTOSIZE)。
    namedWindow( "Window3"、CV :: WINDOW_AUTOSIZE)。
    namedWindow( "Window4"、CV :: WINDOW_AUTOSIZE)。
    namedWindow( "Window5"、CV :: WINDOW_AUTOSIZE)。

    img_rgb =関数imread( "D:/デスクトップ/ PIC / カラーカードRGBCMYK.tif"、-1);
    IF(img_rgb.empty())リターン-1;
    CV ::関数imshow( "ウィンドウ1"、img_rgb);
    //は読みピクセルを取る(Y、X)値BGRの
    //最初の画素(0,0)を読み出すのbの値
    はstd :: COUT << "は、Bその他は、 " <<(unsigned int型)img_rgb.at < UCHAR>(0、0):: STD << ENDL;
    //最初のピクセルを読み取るGの(0,1)値
    はstd :: COUT << "Gのその他は 、" <<(unsigned int型)img_rgb .AT <UCHAR>(0 ,. 1)STD :: << ENDL;
    //最初のピクセルを読み取る(0,2)は、Rの値
    はstd :: COUT << "のRその他は、 " <<(符号なしINT)img_rgb.at <UCHAR>(0 、2)<<はstd :: ENDL <<はstd :: ENDL。


    :: CVのcvtColor(img_rgb、img_gray、CV :: COLOR_BGR2GRAY);
    CV ::関数imshow( "ウィンドウ2"、img_gray);
    //最初の行を読み取り、最初の列の画素の階調値
    はstd :: COUT << "その他のGRAY1ある:「<<(unsigned int型)img_gray.at <UCHAR>(0、0):: STD << ENDL;
    //の最初の行二列の画素の階調値を読み出す
    のstd :: COUT <を< "gray2のその他は:" << (unsigned int型)img_gray.at <UCHAR>(0、1)<<はstd :: ENDL <<はstd :: ENDL。


    :: CVのcvtColor(img_rgb、img_lab、CV :: COLOR_BGR2Lab);
    CV ::関数imshow( "Window3"、img_lab);
    //最初の画素(0,0)読み取り値Lが、実際、マッピングする必要があります範囲[0,255]において、Lは、理論的な範囲[0,100]である
    STD :: COUT << "Lのその他は、" << (INT)(img_lab.at <UCHAR>(0、0)* 100/255) < <STD :: ENDL;
    //がマッピングされる必要がある、実際の範囲は値の最初の画素(0,1)を読み取る[0,255]、理論的な範囲は[-128127]
    STD :: COUT < < "その他は、" << (INT)img_lab.at <UCHAR>(0 ,. 1) - 128 << STD :: ENDL;
    //最初の画素(0,2)b値を読み出しますマッピング必要な、実際の範囲は[0,255]、B理論的な範囲である[-128127]で
    STD :: COUT << "は、Bその他は、" << (INT)img_lab.at <UCHAR>(0,2) - 128 <<はstd :: ENDL << STD::てendl;


    :: CVのcvtColor(img_lab、img_rgb1、CV :: COLOR_Lab2BGR) ;
    CV ::関数imshow( "Window4"、img_rgb1);
    //最初の画素(0,0)を読み出すのLの値
    はstd :: coutの<< "B1のその他は、" <<(INT)img_rgb1.at <UCHAR>(0、300)STD :: << ENDL;
    //最初のピクセルを読み取る(0,1)された値
    はstd :: COUT << "G1のその他は、" <<(INT)img_rgb1.at <UCHAR>(0、301)STD :: << ENDL;
    //は、B値の最初の画素(0,2)を読み出し
    STDました: :COUT << "R1のその他は: " <<(INT)img_rgb1.at <UCHAR>(0、302)<<はstd :: ENDL <<はstd :: ENDL。


    CV ::キャニー(img_gray、img_canny、10、100、3、TRUE)。
    CV ::関数imshow( "Window5"、img_canny)。
    std :: COUT << "画素その他は:" <<(unsigned int型)img_canny.at <UCHAR>(0、0)<<はstd :: ENDL。
    std :: COUT << "画素その他は:" <<(unsigned int型)img_canny.at <UCHAR>(0、1)<<はstd :: ENDL。
    std :: COUT << "画素その他は:" <<(unsigned int型)img_canny.at <UCHAR>(0、2)<<はstd :: ENDL。


    waitKey(0)。
    DestroyWindowを( "ウィンドウ1")。
    DestroyWindowを( "ウィンドウ2");
    DestroyWindowを( "Window3");
    DestroyWindowを( "Window4");
    DestroyWindowを( "Window5");
}

おすすめ

転載: blog.csdn.net/Teddygogogo/article/details/84932648