0

私が持っている質問は次のとおりです: 私はカメラを持っています (解像度 解像度: 640 x 480 px) 画像を取得した後、そのカメラから画像を取得します (8 ビット/ピクセルのグレースケール画像を取得します) 画像を保存しますbmp 形式。私のコードは次のとおりです。

Mat img2(640,480,CV_8UC1,0);

cap.read(img2);

bool succes = imwrite("D:\\TestImage3.bmp",img2);

if(!succes){

cout << "Failed to save the image"; return -1; }

namedWindow("myWindow",CV_WINDOW_AUTOSIZE);

imshow("myWindow",img2);

保存された画像は約 1 MB と非常に大きく、情報を失うことなく (画像を圧縮せずに) 小さい画像が必要ですか?

このトピックに関する 2 番目の質問は次のとおりです。画像が灰色の場合でも、RGB ノイズが発生する場合があります。これは、画像に 1 チャンネル設定ではなく 3 チャンネル設定を設定したようなものです。

誰かが答えを知っているなら、私に知らせてください、私はとても感謝しています。

4

3 に答える 3

1

PNGロスレス画像圧縮形式であるとして画像を保存できます。

bool succes = imwrite("D:\\TestImage3.png",img2);
于 2013-11-13T10:46:18.410 に答える
0

パラメータなしで Mat のデフォルトのコンストラクタを使用するだけです。

Mat img2;
cap.read(img2);
cvtColor(img2, img2, CV_BGR2GRAY); // Convert to single channel
bool succes = imwrite("D:\\TestImage3.bmp", img2);
if(!succes)
{
    cout << "Failed to save the image"; return -1; 
}

imshow("myWindow",img2);
waitKey(0);

また、bmp は非圧縮サイズが大きいことで知られています。代わりに .png を使用してください。

于 2013-11-13T10:50:51.193 に答える