[問題]讀入並顯示raw圖檔

作者: hope2801 (sexydick)   2021-09-29 16:36:02
開發平台(Platform) Win10
編譯器 VC++ 2019+目標環境(跟開發平台不同的話需列出)
額外使用到的函數庫(Library Used): (Ex: OpenCV 4.5.3 )
問題(Question)
沒有合適的建構函式存在,無法從"char"轉換為”cv::Mat”
餵入的資料(Input):
預期的正確結果:
show出 raw檔的圖
錯誤結果(Wrong Output):
沒有合適的建構函式存在,無法從"char"轉換為”cv::Mat”
程式碼(Code):
#include <iostream>
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <fstream>
using namespace cv;
using std::ofstream;
using std::ifstream;
using std::fstream;
using std::ios;
int main() {
fstream rawlena;
rawlena.open("lena_256.raw", ios::binary);
rawlena.seekg(0, ios::end);
int length = rawlena.tellg();
rawlena.seekg(0, ios::beg);
char* buffer = new char[length];
Mat rawlenaimage = (256,256, CV_8UC1, buffer);
imshow("photo", rawlenaimage);
waitKey(5000);
}
補充說明(Supplement):
我上網爬了許多文看到大家都用類似的方法,可是我找了一整天還是找不到我的問題在
哪裡,只好拜託大家幫忙了
作者: nh60211as   2021-09-29 16:45:00
Mat rawImage = Mat(...) 才對
作者: hope2801 (sexydick)   2021-09-29 16:49:00
收到非常謝謝您的幫忙,幫忙我解決了一部份的問題但是我現在遇到了我沒看過的問題0x00007FFCEAA14F99 中 (於 showphoto.exe) 發生未處理的例外狀況: Microsoft C++ 發生例外狀況: std::bad_array_new_length (記憶體位置 0x000000982CF5F7F0)。這是在throw_bad_alloc.cpp檔裡#else // ^^^ Managed ^^^ // vvv Native vvv //__declspec(noreturn) void __CRTDECL __scrt_throw_std_bad_alloc(){throw std::bad_alloc{};}__declspec(noreturn) void __CRTDECL __scrt_throw_std_bad_array_new_length(){throw std::bad_array_new_length{};}#endifhttps://i.imgur.com/bFNOkC0.jpg請問一下這個bug是什麼問題?
作者: nh60211as   2021-09-29 17:57:00
你tellg()回傳值是啥?感覺你這程式碼還會有很多問題
作者: hope2801 (sexydick)   2021-09-29 18:08:00
我的tellg()回傳25970-1給length我的raw圖是一個大小為256x256的深度為8的灰階圖https://i.imgur.com/itcDqee.jpg
作者: nh60211as   2021-09-29 18:29:00
這什麼數字啊,我看不太懂
作者: F04E (Fujitsu)   2021-09-29 20:18:00
只不過是show個raw檔需要動用到OpenCV??這年頭作業真好寫
作者: nh60211as   2021-09-29 20:24:00
我知道25970是什麼了,那是'er'多字元字元的數值tellg()回傳的是-1,代表你讀檔根本就失敗了

Links booklink

Contact Us: admin [ a t ] ucptt.com