2011-07-13 241 views
0

我有一個普遍的問題,以確定是否可以或不在矩形上進行矩陣計算。我有一個CvRect,它具有存儲在座標中的信息,而且我有一個cvMat,它具有轉換數據。我想知道的是,是否有辦法讓Rect使用矩陣數據生成旋轉,傾斜和重新定位的矩形。我在網上搜索,但我只能獲得圖像轉換的信息。在OpenCV中的矩形矩陣計算

在此先感謝您的幫助。

回答

0

不,這是不可能的。 cv :: Rect也不適用於此,因爲它只描述曼哈頓世界中的矩形。有cv :: RotatedRect,但這也不能處理歪斜。

你可以,但是,餵你的矩形簡歷的角點::變換: http://opencv.itseez.com/modules/core/doc/operations_on_arrays.html?highlight=transform#cv2.transform

然後,您將獲得相應的轉換四點。請注意,這個功能也有更多專門的版本,例如warpPerspective()和warpAffine()。

+0

我看了一下WarpPerspective,但它要求CvArr *。由於OpenCV文檔僅指定CvArr,CvMat和IplImage是唯一有效的數據成員,所以不確定它是否允許我在那裏傳遞CvRect。另外我怎麼能夠將4個不同的點傳遞給兩個函數? – Seb

+0

不,根本不可能傳遞一個Rect。你需要先建立一個包含四個點的Mat。使用雙通道矩陣或3通道矩陣(第三通道設置爲1)將點存儲在那裏。 – ypnos

+0

我可以得到一個點到矩陣轉換的例子嗎?我試圖用點來創建矩陣,但是在進行變換時,我已經碰到了它。我用「CvMat * pointMat = cvCreateMat(2,2,CV_32F)」創建了一個2x2矩陣;「接下來我使用「cvSetReal2D」設置點信息,我也驗證了矩陣中的數據存在。當我運行轉換函數時,雖然它讓我崩潰了。我使用的參數是「cvTransform(pointMat,pointMat,H,0);」其中'H'是3x3矩陣。 – Seb