移植:opencv 2.4.3 -> opencv 3.1.,未在此范围内声明 cvGetMat
portation: opencv 2.4.3 -> opencv 3.1., cvGetMat was not declared in this scope
我目前正在尝试将基于 opencv 2.x 的代码移植到 opencv 3.x(高于 3.1)。在这段代码中,使用了一个函数,即 cvGetMat(...)。由于opencv3.x中不存在这个函数,我需要一个合适的替换。有谁知道,如何正确替换此功能?我已经在 opencv 文档和此处的 Whosebug 上寻找过它,但找不到任何东西。
这是使用此函数的代码片段
void cvCanny3( const void* srcarr, void* dstarr,
void* dxarr, void* dyarr,
int aperture_size )
{
CvMat srcstub, *src = cvGetMat( srcarr, &srcstub );
CvMat dststub, *dst = cvGetMat( dstarr, &dststub );
CvMat dxstub, *dx = cvGetMat( dxarr, &dxstub );
CvMat dystub, *dy = cvGetMat( dyarr, &dystub );
...
...
...
}
当我 运行 这段代码时,我只是按预期收到以下错误:
‘cvGetMat’ was not declared in this scope
CvMat srcstub, *src = cvGetMat( srcarr, &srcstub );
^~~~~~~~
cvGetMat
来自旧的基于 C 的接口(它从原始 C 数组创建一个 CvMat 对象),您应该将代码转换为较新的 C++ 接口并使其使用 cv::Mat
类型(包装你的 src_addr
C 数组到 C++ cv::Mat
实例)。
例如,您对 cvGetMat 的调用应替换为 cv::Mat 变量声明。
cv::Mat src(num_rows, num_cols, src_type, src_arr);
num_rows
、num_cols
和 src_type
确定 src_arr
数组的大小和语义。可能,您将不得不在 src_arr
输入上删除 'const' 修饰符。
有关详细信息,请参阅 cv::Mat
参考资料。
所有 cvFunctionName
调用通常在 'cv::' 命名空间中都有它们的 C++ 对应项。例如,cvRemap
将变为 cv::remap
等
我目前正在尝试将基于 opencv 2.x 的代码移植到 opencv 3.x(高于 3.1)。在这段代码中,使用了一个函数,即 cvGetMat(...)。由于opencv3.x中不存在这个函数,我需要一个合适的替换。有谁知道,如何正确替换此功能?我已经在 opencv 文档和此处的 Whosebug 上寻找过它,但找不到任何东西。
这是使用此函数的代码片段
void cvCanny3( const void* srcarr, void* dstarr,
void* dxarr, void* dyarr,
int aperture_size )
{
CvMat srcstub, *src = cvGetMat( srcarr, &srcstub );
CvMat dststub, *dst = cvGetMat( dstarr, &dststub );
CvMat dxstub, *dx = cvGetMat( dxarr, &dxstub );
CvMat dystub, *dy = cvGetMat( dyarr, &dystub );
...
...
...
}
当我 运行 这段代码时,我只是按预期收到以下错误:
‘cvGetMat’ was not declared in this scope CvMat srcstub, *src = cvGetMat( srcarr, &srcstub ); ^~~~~~~~
cvGetMat
来自旧的基于 C 的接口(它从原始 C 数组创建一个 CvMat 对象),您应该将代码转换为较新的 C++ 接口并使其使用 cv::Mat
类型(包装你的 src_addr
C 数组到 C++ cv::Mat
实例)。
例如,您对 cvGetMat 的调用应替换为 cv::Mat 变量声明。
cv::Mat src(num_rows, num_cols, src_type, src_arr);
num_rows
、num_cols
和 src_type
确定 src_arr
数组的大小和语义。可能,您将不得不在 src_arr
输入上删除 'const' 修饰符。
有关详细信息,请参阅 cv::Mat
参考资料。
所有 cvFunctionName
调用通常在 'cv::' 命名空间中都有它们的 C++ 对应项。例如,cvRemap
将变为 cv::remap
等