2015-07-03 72 views
2

我有这样的代码:我应该初始化CV ::垫

mapx.create(image.size(), CV_32FC1); 
mapy.create(image.size(), CV_32FC1); 

什么是在这之后的MapX与mapy值是多少?所有的数据都是零吗?

你看这个类型的初始化:

cv::Mat mapx(image.size(), CV_32FC1); 

我需要明确地设置每个元素的值为零?

如何设置每个元素的值来表示-1?

回答

2

数据应该是不确定的。事实上,你只是分配内存。

cv::Mat mapx(image.size(), CV_32FC1); 

是完全一样的

cv::Mat1f mapx(image.size()); 

cv::Mat mapy; 
mapy.create(image.size(), CV_32FC1); 

您可以指定一个初始值(例如-1)是这样的:

cv::Mat1f(images.size(), -1.f); 

关于你的主要问题我应该初始化吗? ialize cv :: Mat,答案是一般你不需要。从OpenCV的DOC:

而是写的:

Mat color; 
... 
Mat gray(color.rows, color.cols, color.depth()); 
cvtColor(color, gray, CV_BGR2GRAY); 

可以简单的写:

Mat color; 
... 
Mat gray; 
cvtColor(color, gray, CV_BGR2GRAY); 
1

你可以看到OpenCV的文档:

Mat::zeros 
Mat::ones 
Mat A = Mat::ones(100, 100, CV_8U)*3; // make 100x100 matrix filled with 3. 

http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-zeros

我怎么能每个元素的值设置为-1说?

我觉得这样的事情:

create
Mat A = Mat::ones(100, 100, CV_8U)*-1; // make 100x100 matrix filled with -1. 
+0

感谢。如果我不使用这种方法,map中每个元素的值是多少?它是未知的还是零或..? – mans

相关问题