Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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++ 在eige中使用rowwise()时出现异常_C++_Opencv_Eigen - Fatal编程技术网

C++ 在eige中使用rowwise()时出现异常

C++ 在eige中使用rowwise()时出现异常,c++,opencv,eigen,C++,Opencv,Eigen,我是新来的eigen。我的条目在OpenCV表单中,我必须使用Map类将它们转换为eigen表单。我编写了以下代码: int main() { Mat label_data, train_data; //some code Eigen::Map<Eigen::Matrix<double, -1, -1, 1>> train_data_in_Eigen(train_data.ptr<double>(), train_data.rows,

我是新来的
eigen
。我的条目在
OpenCV
表单中,我必须使用
Map
类将它们转换为
eigen
表单。我编写了以下代码:

int main()
{
    Mat label_data, train_data;
    //some code
    Eigen::Map<Eigen::Matrix<double, -1, -1, 1>> train_data_in_Eigen(train_data.ptr<double>(), train_data.rows, train_data.cols);
    Eigen::Map<Eigen::Matrix<double, -1, -1, 1>>* pTrain_data_in_Eigen = &train_data_in_Eigen;
    foo(train_labels, pTrain_data_in_Eigen);
    //some code
}
void foo(std::vector<int> gnd, Eigen::Map<Eigen::Matrix<double, -1, -1, 1>>* pdata)
{
    Eigen::Map<Eigen::Matrix<double, -1, -1, 1>> _data = *pdata;
    auto meanOf_data = _data.colwise().mean();
    _data.rowwise() -= meanOf_data;
    //some code
}
intmain()
{
Mat标签数据、列车数据;
//一些代码
Eigen::将train_data_映射到_Eigen中(train_data.ptr(),train_data.rows,train_data.cols);
Eigen::Map*pTrain_data_in_Eigen=&训练_data_in_Eigen;
foo(列车标签、列车数据);
//一些代码
}
void foo(标准::矢量gnd,特征::映射*pdata)
{
特征::映射_数据=*pdata;
_data的自动平均值=_data.colwise().mean();
_data.rowwise()-=_数据的平均值;
//一些代码
}
我在
\u data.rowwise()-=meanOf\u data行中得到了这个
异常错误

在以下位置引发异常:访问冲突读取位置
。但是当我以这种方式编写:
auto-dd=\u-data.rowwise()-=meanOf\u-data
时,我没有异常。有什么问题吗?以及如何修复?

由于
自动
meanOf_data
是一个引用死亡临时对象的表达式,而不是实际的向量。阅读解决方案:

RowVectorXd meanOf_data = _data.colwise().mean();
或:


由于
auto
meanOf_data
是一个引用死临时对象的表达式,而不是实际的向量。阅读解决方案:

RowVectorXd meanOf_data = _data.colwise().mean();
或:


通常,尝试提供一个实际编译和复制错误的方法。您的MCVE不会编译,甚至不包含行方式的
。通常,请尝试提供实际编译和复制错误的。您的MCVE将不会编译,甚至不包括行方式的
。谢谢,但是通过您的第一种方式:
VectorXd meanOf_data=_data.colwise().mean()
我得到了这个错误:
你通过了列向量,但是行向量是预期的
然后我尝试了
RowVectorXd meanOf_data=\u data.colwise().mean()
通过第二种方法,我得到了我在上述问题中提到的异常错误。您对于
RowVectorXd
是正确的,但即使在内存调试器中,我也无法重现您的问题。因此,请提供一个(最小、完整且可验证的示例)[。您的问题可能来自其他地方。谢谢,但请使用您的第一种方式:
VectorXd meanOf_data=_data.colwise().mean()
我遇到了这个错误:
您传递了列向量,但行向量是预期的
然后我尝试了
RowVectorXd meansof\u data=\u data.colwise().mean()使用第二种方法,我得到了我在上述问题中提到的异常错误。您对于
RowVectorXd
是正确的,但我无法在内存调试器中重现您的问题。因此,请提供一个(最小、完整且可验证的示例)[您的问题可能来自其他地方。