これは本当に簡単な質問ですが、私はその答えを見つけることができませんでした。一般的なデータ型のファイルを読む機能
私は(バイナリ)ファイルを読み込んで、その内容をopenCVイメージに送ります。現在、ファイルは常に "unsigned char"データ型ですが、サポートを他のデータ型に拡張したいと考えています。関数の引数として好ましい。
私はC++をあまり経験していませんが、これを使ってグーグルで調べると、テンプレートを使って実行する必要があるように感じられますが、実装方法はわかりません。
cv::Mat ReadImage(const char * filename, int dataTypeSize, int imageWidth)
{
auto read_image = fopen(filename, "rb");
if (read_image == nullptr)
{
printf("Image Not Found\n");
return cv::Mat();
}
fseek(read_image, 0, SEEK_END);
int fileLen = ftell(read_image);
fseek(read_image, 0, SEEK_SET);
auto pre_image = static_cast<unsigned char *>(malloc(fileLen));
auto data = fread(pre_image, 1, fileLen, read_image);
// Printed and verify the values
//printf("File Size %d\n", fileLen);
//printf("Read bytes %zd\n", data);
auto width = imageWidth;
auto height = fileLen/dataTypeSize/imageWidth;
fclose(read_image);
vector<unsigned char> buffer(pre_image, pre_image + data);
auto img = cv::Mat(height, width, CV_64F, pre_image);
//printf("Image rows %d\n", img.rows);
//printf("Image cols %d\n", img.cols);
return img;
}
そこには 'double'がそのコードではありません、または私は何かが足りないのですか? – user463035818
すでに動作しているもの(入力ファイルと出力)の例を投稿して、何を達成したいでしょうか? – bitcell
@ tobi303いいえ、私は間違ったコードを貼り付けました:)これは、署名されていない文字のファイルを読み込みます。私は、コードに一致するように質問を言い換えるつもりですが、アイデアはまだ同じです。私は関数がさまざまなデータ型のファイルを読むことができるようにします。 – Markus