2013-10-10 3 views
1

또 다른 행렬의 부분 집합에 행렬 곱셈 결과를 복사 : 그것은 가능한 직접 C를 행렬하는 결과를 복사을 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))); 

ISN ' 예를 들면 (나는 이것이 작동하지 않는다는 것을 알고있다) :

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

더 효율적이지 않습니까?

+0

가 왜 작동하지 않는 이유는 무엇입니까? 나에게 좋은 것처럼 보인다. 'a * b'를 사용하여 새로운 객체를 만들고 있습니다. 직접 사용하거나 임시 변수에 저장하면 거의 동일합니다. – Geoffroy

답변

1

이 시도하지 :

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

없음 복사를 여기에.

또는 더 간결 :

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

대단히 감사합니다! <\br>'c (cv :: Rect (0,0,3,3)) = a * b;'잘 작동합니다! – Chris

+0

당신을 가장 환영합니다. 답을 대답으로 표시하십시오. –