[1]在OpenCV源代码中定义的cv :: Mat数据结构构造函数(在C / C ++中)在哪里?
我假设cv :: Mat数据结构在类似
之类的情况下动态分配给堆 cv::Mat mat(rows, cols, type);
被调用,但无法在
中找到ANSI C或C ++实现 opencv / modules / core / src / matrix.cpp
也不在
opencv / modules / core / src / datastructs.cpp
。
已解决: cv::Mat
在matrix.cpp中分配了fastMalloc()
。这是在cv::Mat:create()
function内执行的。
[2]此外,我很想知道在执行图像处理操作时cv :: Mat在硬件中的位置:
。总是在“主存储器”(SDRAM)中,
。总是在片上缓存(SRAM),
。或两者的某种组合?
答案 0 :(得分:2)
cv :: Mat mat(rows,cols,type);
这是内联构造函数,它在core/mat.hpp
:
inline Mat::Mat(int _rows, int _cols, int _type) : size(&rows)
{
initEmpty();
create(_rows, _cols, _type);
}
答案 1 :(得分:1)
实际的构造函数在
中... / core / core.hpp
class CV_EXPORTS Mat
{
public:
//! default constructor
Mat();
//! constructs 2D matrix of the specified size and type
// (_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.)
Mat(int rows, int cols, int type);
Mat(Size size, int type);
//! constucts 2D matrix and fills it with the specified value _s.
Mat(int rows, int cols, int type, const Scalar& s);
Mat(Size size, int type, const Scalar& s);
//! constructs n-dimensional matrix
Mat(int ndims, const int* sizes, int type);
Mat(int ndims, const int* sizes, int type, const Scalar& s);
//! copy constructor
Mat(const Mat& m);
//! constructor for matrix headers pointing to user-allocated data
Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP);
Mat(Size size, int type, void* data, size_t step=AUTO_STEP);
Mat(int ndims, const int* sizes, int type, void* data, const size_t* steps=0);
.....
};