[问题]读入并显示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