1

私はopencv2.4とnumpyを使用しています。画像を開いて、その画像に関するすべての情報(8ビット-RGB-BGRなどの場合)を取得し、色空間を変更してみたいと思います。私はこのコードを持っています:

if __name__ == '__main__':
    img =  cv2.imread('imL.png') 
    conv= cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
        cv2.imwrite('lab.png', conv )

ファイルを開くlab.pngと、さまざまな色の画像が表示されます。http://www.brucelindbloom.com/でLABに対するBGRの値を確認します。

このために、1つの画像に関するすべての情報を知りたいと思います。

4

2 に答える 2

3

その場合、imwrite() は指定された形式 (PNG、JPEG 2000、および TIFF) の単一チャネルまたは 3 チャネル ('BGR' チャネル順) でファイルを保存するため、異なる画像の色が得られます。この機能を使用して画像を保存できます。imwrite() は、画像を常に BGR に保存することを想定しているため、画像を保存するための LAB 形式を認識していません。形式、深さ、またはチャネルの順序が異なる場合は、 Mat::convertTo() および cvtColor() を使用して変換してから保存してください。

于 2012-11-30T13:18:46.280 に答える
2

Lab は、cv2.imread() から得られる BGR 色空間のような別の色空間です。温度を華氏から摂氏に変換するのと同じです。華氏 32 度と摂氏 0 度は同じ温度ですが、単位が異なります。

cv2.imwrite() は、値が BGR 色空間にあるかどうかを知りません。3次元配列を取得すると、conv変数にLab色空間が含まれている間、それがBGR色空間であると想定されます。これが、画像の色が変更される理由です。

参考までに、BGR 色空間の各レイヤーには青、緑、赤の色が含まれ、Lab のレイヤーにはそれぞれ明度 (0-100)、a*、b* が含まれます。詳細については、Wikipedia の「Lab 色空間」を参照してください。

于 2012-12-03T15:19:02.803 に答える