gpt4 book ai didi

c++ - 无法在 C++ 中写入 4D vector (没有可行的重载 '=')

转载 作者:行者123 更新时间:2023-11-30 02:23:37 25 4
gpt4 key购买 nike

我面临的问题是,通过 openCV 库,我正在读取一系列图像作为它们自己的“Mat”格式:图像矩阵。基本上,我需要将任何大于 0 的像素值写入 4D vector ,并将任何 == 0 的像素值写入“假”。

为什么是 4 个维度? vector<vector<vector<bool>>>pointVector;3 个 vector 级别指的是 X、Y、Z 轴。 Bool 只是真/假。图像是 Y 乘 Z,并沿 X 轴以 3D 方式堆叠。基本上,我们有一系列代表以 3D 方式堆叠的点的图像。(不好的解释?可能)无论如何,问题出在我读取单张照片中的点然后将它们写入 4D vector 的函数中。

注意:xVal 是一个全局存储地址的照片的 ID 号。它用于 X 维度(图像层)。

 Int lineTo3DVector (Mat image)
{
// Takes in matrix and converts to 4D vector.
// This will be exported and all vectors added together into a point cloud

vector<vector<vector<bool>>>pointVector;
for (int x=0; x<image.rows; x++)
{
for (int y = 0; y<image.cols; y++)
{
if((image.at<int>(x,y)) > 0)
{
pointVector[xVal*image.cols*image.rows + x*image.cols + y] = true;
}
}
}
}

我还没有写完所有的函数,因为 if 语句打算在地址 xVal, x, y 处用 bool 'true' 写 pointVector 抛出一个错误说:

 No viable overloaded '='

知道出了什么问题吗?我在网上搜索过,试图挖掘信息让自己很头疼(是的,又是深层次的菜鸟),所以任何建议都将不胜感激。

最佳答案

您只访问了第一个 vector (外部 vector ),而没有实际访问内部的任何 vector 。

语法为 pointVector[x][y][z] = true,其中 xyz 是您要用于访问三个嵌套 vector 的值。

你想要的是:

pointVector[xVal][x][y] = true

您使用的是一种访问在内存中作为一维数组布局的 3D 数组的方法,但这不是您想要的。

确保你没有越界

确保您访问的元素确实存在!如果您显示的代码是实际代码,pointVector 在您尝试使用它时将没有任何元素。

要解决这个问题,您必须调整所有 vector (外部和内部)。这可能会变得很麻烦,您可能想要使用一维方法,即分配一个大的一维 bool 数组并使用您使用的方法访问它 (largeArray[xVal* image.cols*image.rows + x*image.cols + y]).

一维方法

在以下代码中,numberOfValues 是您将访问的最大元素数。

int lineTo3DVector (Mat image)
{
// Takes in matrix and converts to 4D vector.
// This will be exported and all vectors added together into a point cloud

std::vector<bool> pointVector;
pointVector.resize(numberOfValues);

for (int x=0; x < image.rows; x++)
{
for (int y = 0; y < image.cols; y++)
{
if(image.at<int>(x,y) > 0)
{
pointVector[xVal*image.cols*image.rows + x*image.cols + y] = true;
}
}
}

// Return whatever.
}

关于c++ - 无法在 C++ 中写入 4D vector (没有可行的重载 '='),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com