1

OpenCV を使用してカメラからキャプチャした画像データを書き込み、読み出そうとすると、うまくいきません。CV_8UC3 や CV_UC1 グレー イメージなど、さまざまな形式で試しています。

まず、カメラから画像 (640*480) をキャプチャし、データをファイルに保存します。

VideoCapture cap(0);

namedWindow("test",0);
namedWindow("gray",0);

FILE *f=fopen("data.txt","wt+");

while(1)
{
    Mat frame;
    cap>>frame;
    imshow("test", frame);

    //Mat temp(1, 1, CV_8UC3);
       Mat gray;

    if(waitKey(30) >= 0) 
    {
        cvtColor(frame, gray, CV_BGR2GRAY);
        imshow("gray", gray);
        waitKey();
        fwrite(gray.data, sizeof(unsigned char), 640*480,f);
        break;
    }
}

fclose(f);
return 0;

次に、別のプログラムで、次のように読み上げようとします。

FILE *f = fopen("data.txt", "rt");
unsigned char* buffer;
size_t result;
buffer = (unsigned char*)malloc(sizeof(unsigned char)*640*480);

result = fread(buffer, sizeof(unsigned char), 640*480,f);

fclose(f);

Mat image(640, 480, CV_8UC1, buffer);

namedWindow("test", 0);
imshow("test", image);
waitKey();

するとイメージがおかしくなります。

あらゆる種類の提案をありがとう。

4

1 に答える 1

2

バイナリ データを txt モードで保存することはできません。

する必要があります

FILE *f=fopen("data.txt","wb");

それ以外の :

FILE *f=fopen("data.txt","wt+");  
// btw, what's the + for ? appending does not make any sense here

読み取り操作についても同じです。(「rt」ではなく「rb」)


しかし、繰り返しになりますが、なぜこれがすべてなのですか?組み込みのものを使用します:

于 2013-08-11T08:59:23.490 に答える