2015-03-02 70 views
1

我正在嘗試從另外兩個矩陣生成一個cv :: Mat C,以便得到由矩陣A和B的一維點組合產生的二維點產生的第三個矩陣。將cv :: Mat A的每個成員與cv :: Mat B合併,以創建一個具有[a(x,y),b(x,y)]的cv :: Mat C

我的問題是,只嘗試連接矩陣,並沒有真正地將每個點與另一個點合併,這將導致2D點的3-D矩陣。

有沒有人可以幫助我解決這個問題?

非常感謝。

只是爲了更清楚:

我有什麼是A = [(0, 1, 2),(3, 4, 5)]B=[(5, 4, 3),(2, 1, 0)],我想創建

C = {[(0,5), (1,4), (2,3)], 
     [(3,2), (4,1), (5,0)]}. 

謝謝

+0

我不認爲這樣的API在opencv存在,會自動做到這一點。 – marol 2015-03-02 16:59:23

回答

1

您可以通過創建一個自定義類型的矩陣做到這一點。請參閱here

基本上,您需要創建一個處理點(數據對)的DataType類專業化。

或者您可以使用給定的std::complex<double>矩陣而不是整數作爲醜陋的快捷方式。文檔中的示例代碼:

Mat B = Mat_<std::complex<double> >(3, 3); 

但是,此解決方案可能不是真正的解決方案,以您的一般問題。 Google XY問題。

+1

我不會使用std :: complex作爲「醜陋的快捷方式」。建議使用已定義的結構,儘管在這種情況下使用std :: pair 會更合適。而且更合適 - cv :: vec2b – marol 2015-03-02 16:56:57

+0

你是對的。我不需要創建這個矩陣。我的問題是我已經校準了相機,但是我需要上傳相機矩陣和失真係數,以便實時校準圖像。但我仍然不知道該怎麼做。至少現在我明白我是在問我Y,而我的真正問題是X. – 2015-03-02 18:46:00