2

[1] cv::Mat データ構造コンストラクターは、OpenCV ソース コードで明示的に (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.

解決済み: matrix.cppに aがcv::Mat割り当てられます。これは関数内で実行されます。fastMalloc()cv::Mat:create()

[2] さらに、画像処理操作が実行されるときに cv::Mat がハードウェアのどこに配置されるかを知りたいです。

. 常に「メインメモリ」(SDRAM)にあり、

. 常にオンチップ キャッシュ (SRAM) にあり、

. または2つの組み合わせ?

4

2 に答える 2

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);
}
于 2012-12-23T19:10:12.697 に答える
1

実際のコンストラクターは

... / コア / 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);
 .....

};
于 2013-10-23T18:53:17.273 に答える