我想使用opencv執行圖像變形。 我已經檢測到圖像的4個角((ex)4000x4000),並在opencv中使用getPerspectiveTransform
獲得了變換矩陣。 現在,我想在圖像中心扭曲圖像。 所以我用warpPerspective
。 我輸入的源圖像的大小是450x450,我使用我爲整個圖像計算的變換矩陣。圖像使用opencv變形
但屏幕上沒有顯示任何內容。 任何幫助表示讚賞。
這裏是示例代碼和示例圖像。
這是我從圖像要翹曲區域。(src_crop在代碼)
這是結果。
source[0] = Point2f(lt.x, lt.y);
source[1] = Point2f(rt.x, rt.y);
source[2] = Point2f(rb.x, rb.y);
source[3] = Point2f(lb.x, lb.y);
dst[0] = Point2f(6, 10);
dst[1] = Point2f(3899, 7);
dst[2] = Point2f(3901, 3899);
dst[3] = Point2f(9, 3902);
Mat transformMatrix ;
transformMatrix = getPerspectiveTransform(source, dst);
Mat dstFrame ;
warpPerspective(src_crop, dstFrame, transformMatrix, Size(450, 450));
感謝您的回答。我知道計算整個圖像的轉換矩陣(4000乘4000)。但我輸入src_crop(450乘450)的圖像warpPerspective作爲源圖像。所以我認爲src_crop圖像使用變換矩陣變形。是不可能的?如果我不知道src_crop圖像的角點,我想爲src_crop圖像翹曲圖像 – eonjeo
您應該使用'sourceImage'(4000x4000)而不是剪裁它。裁剪將導致您的'originalCorners'數組指向不存在的角點。在翹曲之前,我從來沒有做過糾錯,但這可能會導致您的輸出完全黑色的事實? – Jurjen
其實我使用裁剪圖像是因爲減少了程序的運行時間。我使用matchTemplate函數來檢測裁剪圖像的中心點。所以我猜想裁剪圖像變形而不是整個圖像變形是變形的時間很短。 – eonjeo