在 2D 动态数组中填充数据
Filling data in 2D dynamic array
我想将字符串类型的数据变量存储在内存中,这些变量实际上是图像的十六进制代码。因此,将有一个2D动态数组,它在运行时存储数据。我尝试按照代码填充数据,首先创建指针到指针的动态数组,如下所示。
//dynamic allocation of array
int row = rows - 1;
int col = cols - 1;
Mat img = image;
cout << " row " << row << " col " << col <<endl;
String **matrix;
matrix= new String*[row]; // dynamic array (size 10) of pointers to int
for (int i = 0; i < 10; ++i) {
matrix[i] = new String[col];
// each i-th pointer is now pointing to dynamic array (size 10) of actual int values
}
在这里,如果我没记错的话,我得到了堆上的内存。所以我编写嵌套循环来提取 RGB 信息,转换为十六进制字符串并存储在数组中。
for (int r = 0; r <= row; r++) {
cout << endl;
for (int c = 0; c <= col; c++)
{
Vec3b intensity = img.at<Vec3b>(r, c);
uchar blue = intensity.val[0];
int b = (int)blue;
uchar green = intensity.val[1];
int g = (int)green;
uchar red = intensity.val[2];
int r = (int)red;
//filling dynamic array
matrix[row][col] = RGBToHex(r,g,b);
}
}
这是我将RGB转换为十六进制字符串的方法。
string RGBToHex(int rNum, int gNum, int bNum)
{
// returns 6 digit hex code
string result;
char r[255];
sprintf_s(r, "%.2X", rNum);
result.append(r);
char g[255];
sprintf_s(g, "%.2X", gNum);
result.append(g);
char b[255];
sprintf_s(b, "%.2X", bNum);
result.append(b);
return result;
}
我尝试提取 RGB 信息,转换为十六进制字符串,存储在.txt文件中,它可以工作,但是当我尝试填充数组时会抛出以下异常。
请强调问题所在,让我知道我错在哪里。
**Exception thrown at 0x000007FEE1AD7330 (opencv_world310.dll) in ImageDecoder.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.
If there is a handler for this exception, the program may be safely continued.**
for (int r = 0; r <= row; r++) {
我认为它应该是r < row
而不是r <=row
如果您分配了 10x10 的 2D 数组,那么这个matrix[row][col]
应该是matrix[9][9]
的,并且您的循环使其matrix[10][10
],这是一个问题。
下面的语句也有问题,使用行而不是 10。
for (int i = 0; i < 10; ++i) {
matrix[row][col] = RGBToHex(r,g,b);
你定义matrix
的方式,最多可以访问matrix[row-1][col-1]
,不是吗?
并不是说row
和col
似乎是固定值。
相关文章:
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- C++:使用缓冲区中的数据填充结构
- 用数据填充未指定大小的数组
- 如何使用数据成员填充派生类的对象到基类的指针数组中
- 深度缓冲区未填充阴影贴图渲染通道中的数据
- 缓冲区填充了不同类型的数据和严格的混叠
- 关于数据对齐和填充的另一个困惑
- 为什么 sys 套接字 recv 函数不填充数据但返回字节长度?
- 缓冲区用不需要的数据填充 char 数组中的最后一个空格
- 在2D数组中填充数据
- 当结构数组在主线程中填充数据时,从结构数组的低索引元素读取是否线程安全
- 用于在C++中填充数据的组合
- 在 2D 动态数组中填充数据
- C++无法填充数据
- 在 c++ 中使用消息结构读取/填充数据缓冲区的正确方法是什么?
- C/C++:在结构中打包或填充数据
- 填充数据适配器时发生故障
- 如何填充数据结构列表
- mfcc++在树控制中填充数据
- 为什么填充数据成员时不一致