2013-10-10 62 views
1

我嘗試直接複製矩陣乘法結果到另一個矩陣的一個子集:OpenCV的 - 直接複製矩陣乘法結果到另一個矩陣的一個子集

cv::Mat a,b,c; 
//fill matrices a and b and set matrix c to correct size 
cv::Mat ab=a*b; 
ab.copyTo(c(cv::Rect(0,0,3,3))); 

」不是個可以直接複製結果矩陣C像例如(我知道這是行不通的):

(a*b).copyTo(c(cv::Rect(0,0,3,3))); 
//or 
c(cv::Rect(0,0,3,3)).setTo(a*b); 

會不會更有效率?這裏

cv::Mat subC = c(cv::Rect(0,0,3,3)); 
subC = a*b; 

沒有複製:

+0

爲什麼它不工作?對我來說似乎很好。你使用'a * b'創建一個新對象,如果你直接使用它或者將它存儲在一個臨時變量中,它幾乎是一樣的。 – Geoffroy

回答

1

試試這個。

或者更簡潔地說:

c(cv::Rect(0,0,3,3)) = a*b; 
+0

非常感謝! <\br>'c(cv :: Rect(0,0,3,3))= a * b;'工作正常! – Chris

+0

非常歡迎。請將回答標記爲已回答。 –