1

重複の可能性:
OpenCVとMATLABのグレースケール値は同じ画像で異なります

matlabでは、カラービデオを読み取り、特定のフレームを抽出して、rgb2gray関数を使用してグレースケール画像に変換しますが、同じビデオをopenCV2.3.1にロードし、同じフレームを抽出してからグレースケールに変換すると、 matlabと同じグレースケール値??? なぜ??。これはopenCV2.3.1VideoCapturecap(0);を使用したC++コードです。cap.open( "人間の精子の評価_0.avi"); マット画像; マットグレー(480,640、CV_8U);

for(int i=0;i<513;i++)
{ 
   cap >> image; 
   cvtColor(image,gray,CV_RGB2GRAY);
} 

for(int i=0;i<20;i++)
{ 
    for(int j=0;j<20;j++) 
    { 
        cout<<(int)gray.at(i,j) << ' '; 
    } 
}
4

1 に答える 1

4
  1. OpenCV はデフォルトで BGR カラー形式を使用します。この場合、CV_BGR2GRAY モードを使用する必要があります。CV_RGB2GRAY を使用するときは、本当に RGB があることを確認してください。

  2. RGB からグレーへの変換は、実装ごとに異なる場合があります。画像処理ソフトウェアには、チャネルをいくつかの係数で合計する前に現在の RGB カラー スペースのガンマ補正を補正しないというよくある間違いがあります。OpenCV と Matlab の結果にわずかな違いがある場合、これが問題になる可能性があります。

于 2012-09-07T07:51:59.910 に答える