2015-07-03 105 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

相關問題