0

ウェブカメラまたは外部デバイスからデータを取得し、ビデオ フレームをテキスト ファイルに保存し、作成したテキスト ファイルからフレームを読み取るアプリケーションを構築しようとしています。

テキスト ファイルに保存することをお勧めするかどうかはわかりません。提案をお待ちしています。

これまでのところ、テキスト ファイルへの保存を行ってきました。

私の問題は、テキストファイルからの読み取りです。基本的にテキストを一行一行読んでいくのですが、このテキストを Mat オブジェクトに変換する方法がわかりません。

これまでのところ、私のコードは次のとおりです。

ifstream read_storage(new_vid_frm_path);
if(!read_storage.is_open()) {
    perror("\n\n\n\t\t\t(-)FAIL : Can't Open SavedVideoFrames.txt\n\n\n\t\t\t");
    return -1;
}

VideoWriter *vid = new VideoWriter(new_vid_frm_path,CV_FOURCC('P', 'I', 'M', '1'),30,Size(vc.get(CV_CAP_PROP_FRAME_WIDTH),vc.get(CV_CAP_PROP_FRAME_HEIGHT)));
Mat line;
vector<Mat> vid_frms;
while ( getline (read_storage,line) ) {
    cout << line << '\n';

}

read_storage.close();

if(vid_frms.size() == 0){
    printf("\n\n\n\t\t\t(-)FAIL: Error In Frame\n\n\n\t\t\t");
    return -1;
}

for(size_t i = 0; i<vid_frms.size(); i++)
    (*vid).write(vid_frms[i]);

printf("\n\n\n\t\t\t(+)SUCCESS: Video Processing Complete \n\n\n\t\t\t ");

この線の文字列を Mat オブジェクトにキャストまたは変換する方法を教えてください。

while ( getline (read_storage,line) ) {
    cout << line << '\n';

}

ありがとう。

ちなみに、この解法を見たのですが、よくわかりませんでした。 バイト文字列を cv::mat に変換します

C ++でバイト型が見つかりませんでした.StringからMatオブジェクトへの直接変換があると思います。

4

1 に答える 1

2

OpenCV のあらゆるもの (ほぼ) を .xml または .yml テキスト ファイルに保存し、OpenCV XML/YAML FileStorageメソッドを使用して読み戻すことができます。

ファイル関連のネイティブ C++ メソッドを使用するよりも、これを強くお勧めします。

このすべての面倒な作業を処理するように特別に設計されています。

于 2016-07-19T21:12:38.063 に答える