0
這感覺像一個非常簡單的問題,但我一直無法找到答案。函數讀取通用數據類型的文件
我有一個函數,它讀取(二進制)文件並將內容提供給openCV圖像。目前該文件始終是「無符號字符」數據類型,但我想擴大對其他數據類型的支持。作爲函數的參數是優選的。
我對C++並不是非常有經驗,但是經過Google搜索後感覺像是應該用模板來完成的事情,但我真的不確定如何實現它。
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