我应该初始化 cv::Mat

man*_*ans 3 c++ opencv

我有这个代码:

mapx.create(image.size(), CV_32FC1);
mapy.create(image.size(), CV_32FC1);
Run Code Online (Sandbox Code Playgroud)

此后mapx和mapy中的值是多少?所有数据都为零吗?

这种类型的初始化怎么样:

  cv::Mat  mapx(image.size(), CV_32FC1);
Run Code Online (Sandbox Code Playgroud)

我是否需要显式地将每个元素的值设置为零?

如何将每个元素的值设置为-1?

Mik*_*iki 5

之后的数据create应该是未定义的。事实上,你只是在分配内存。

cv::Mat  mapx(image.size(), CV_32FC1);
Run Code Online (Sandbox Code Playgroud)

完全一样

cv::Mat1f mapx(image.size());
Run Code Online (Sandbox Code Playgroud)

cv::Mat mapy;
mapy.create(image.size(), CV_32FC1);
Run Code Online (Sandbox Code Playgroud)

您可以像这样分配初始值(例如-1):

cv::Mat1f(images.size(), -1.f);
Run Code Online (Sandbox Code Playgroud)

关于您的主要问题我应该初始化 cv::Mat 吗?答案是一般情况下您不需要。来自 OpenCV 文档:

而不是写:

Mat color;
...
Mat gray(color.rows, color.cols, color.depth());
cvtColor(color, gray, CV_BGR2GRAY);
Run Code Online (Sandbox Code Playgroud)

你可以简单地写:

Mat color;
...
Mat gray;
cvtColor(color, gray, CV_BGR2GRAY);
Run Code Online (Sandbox Code Playgroud)