1. 程式人生 > >opencv Mat子矩陣賦值小tip

opencv Mat子矩陣賦值小tip

總所周知,Mat型別由頭部和資料兩個部分組成,從一個Mat中提取的子矩陣共享相同的儲存空間。

基於以上知識,在進行Mat子矩陣賦值的時候,首先需要得到Mat的子矩陣。

這裡設初始矩陣為A,子矩陣為Mat B=A(rect(0,0,m,n))或Mat B(A,rect(0,0,m,n))或iB=A(Range(0, m), Range(0, n)))都是可以的。

在進行賦值時,請注意:

1、直接將與B等大的C用=號賦值時不可行的,因為這會使B指向C所在的空間,而不會影響A的值。

2、但是可以採用copyto或clone實現資料的賦值。

3、在注意點2時需要注意Mat C和Mat B需要具有完全相同的格式,不然即使是使用2方法也會導致B重新生成空間,從而使得A的值不受影響。