1

次のようにopenCVでマットを作成しました:

cv::Mat m = cv::Mat(10,10, CV_32FC1);
for(int i = 0; i < 10; i++){
    for(int j = 0; j < 10; j++){
        m.at<float>(i,j) = 1;
     }
}

次の方法でディスクに保存します。

imwrite("out.png", m);

私は今、次のようにそれを読もうとしています:

cv::Mat m = imread("out.png", CV_LOAD_IMAGE_UNCHANGED);

m.at<float>(5,5)しかし、たとえばのようにアクセスすると、 m のデータは完全にランダムに見えます。

書き込まれたデータを読み返すにはどうすればよいですか? たとえば、matlab では次のことができます。

m = imread("out.png") 

そして、それは私に1の正しい行列を与えます

ありがとう

4

1 に答える 1

4

見るimwrite

関数 imwrite は、イメージを指定されたファイルに保存します。イメージ形式は、ファイル名の拡張子に基づいて選択されます (拡張子のリストについては、imread() を参照してください)。この関数を使用して保存できるのは、8 ビット (PNG、JPEG 2000、および TIFF の場合は 16 ビット符号なし (CV_16U)) のシングル チャネルまたは 3 チャネル ('BGR' チャネル順) の画像のみです。形式、深さ、またはチャネルの順序が異なる場合は、Mat::convertTo() および cvtColor() を使用して変換してから保存してください。または、ユニバーサル XML I/O 関数を使用して、画像を XML または YAML 形式で保存します。

深さ変換先

于 2013-03-04T18:11:00.447 に答える