Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的图像处理+;_C++_Image Processing - Fatal编程技术网

C++ C+中的图像处理+;

C++ C+中的图像处理+;,c++,image-processing,C++,Image Processing,我正在用C打开一个3.5 MB的文件,将其读入一个无符号字符数组图像数据,我已按如下方式初始化该图像数据: unsigned char *** Imagedata; Imagedata = new unsigned char**[1278]; for(int i=0; i<1278; i++){ Imagedata[i]= new unsigned char*[968]; for(int j=0; j<968; j++){ Imagedata[i][j

我正在用C打开一个3.5 MB的文件,将其读入一个无符号字符数组图像数据,我已按如下方式初始化该图像数据:

unsigned char *** Imagedata;
Imagedata = new unsigned char**[1278];
for(int i=0; i<1278; i++){
    Imagedata[i]= new unsigned char*[968];
    for(int j=0; j<968; j++){
        Imagedata[i][j]= new unsigned char[3];
    }
}
无符号字符***图像数据;
Imagedata=新的无符号字符**[1278];

对于(int i=0;i我打赌这是因为skipws标志在文件流中默认设置。打开fstreams后,立即添加file.unset(std::ios_base::skipws);

我打赌这是因为skipws标志在文件流中默认设置。打开fstreams后,立即添加file.unset(std::ios_base::skipws)

这是格式化输入,即使您指定了
ios::binary
,它也会吃“空白”字符。请使用

Imagedata[i][j][k] = ifile.get();
更好的是,为整个文件分配一大块内存,然后通过一个
read
调用读取。现在要做的是为每个像素分配一个指针,这非常浪费,尤其是对于64位系统

这是格式化输入,即使您指定了
ios::binary
,它也会吃“空白”字符。请使用

Imagedata[i][j][k] = ifile.get();

更好的办法是,为整个文件分配一大块内存,然后通过一个
读取
调用来读取。现在要做的是为每个像素分配一个指针,这非常浪费,特别是对于64位系统。

当然,你知道,你应该使用
常量
变量或
定义
,而不是文字数字
1278
968
。是的,我通常都这么做。这只是为了这个示例代码。无论如何感谢你提到它。总是值得向碰巧也读过它的新手指出它。当然,你知道,你应该使用
const
变量或
#defines
而不是字面数字
1278
968
。是的,我通常会这么做。这只是为了这个示例代码。谢谢你提到它。总是值得向碰巧也读过它的新手指出它。即使是二进制流也会设置它吗?这看起来很傻。是的,是的。我不知道它的原理,但已经咬了我很多次了。我无法继续如果它需要修复,而不知道它的基本原理。即使是二进制流也会设置吗?这似乎很愚蠢。是的,它设置了。我不知道基本原理,但已经咬了我很多次。如果不知道它的基本原理,我就无法判断它是否需要修复。谢谢!这很有效。。而且。。我找到了另一种有效的方法。。我删除了在读取过程中删除了第三个循环for(int i=0;iThanks!这很有效..另外..我找到了另一种有效的方法..我在读取过程中删除了第三个循环..for(int i=0;i
ifile>>Imagedata[i][j][k];
Imagedata[i][j][k] = ifile.get();