Sub Process_Globals
Dim srcBitmap,dstBitmap As Bitmap
Dim srcMat,matrix,dstMat As OCVMat
Dim pts_src,pts_dst As OCVMatOfPoint2f 'clockwise from top left.
Dim mCore As OCVCore
Dim mUtils As OCVUtils
Dim mImgProc As OCVImgproc
Dim mCvType As OCVCvType
Dim src_points(4), dst_points(4) As OCVPoint
End Sub
.
.
.
Activity.LoadLayout("Layout")
' Load source image
srcBitmap.Initialize(File.DirAssets, "cards2.png")
Dim ivSrc As ImageView
ivSrc.Initialize("ivSrc")
ivSrc.Bitmap=srcBitmap
Activity.AddView(ivSrc, 0%x, 0%y, 100%x, 60%y)
' Convert bitmap to Mat
srcMat.Initialize2(srcBitmap.Width, srcBitmap.Height, mCvType.CV_8UC4)
mUtils.bitmapToMat(srcBitmap, srcMat,False)
src_points(0).Initialize(200, 46) ' top-left
src_points(1).Initialize(325, 138) ' top-right
src_points(2).Initialize(200, 313) ' bottom-right
src_points(3).Initialize(74, 222) ' bottom-left
pts_src.Initialize()
pts_src.fromArray(src_points)
' Define destination points (same order as source points)
Dim wid As Double = 500
Dim hite As Double = 700
Dim dst_points(4) As OCVPoint
dst_points(0).Initialize(0, 0) ' top-left
dst_points(1).Initialize(wid, 0) ' top-right
dst_points(2).Initialize(wid, hite) ' bottom-right
dst_points(3).Initialize(0, hite) ' bottom-left
pts_dst.Initialize()
pts_dst.fromArray(dst_points)
' Get perspective transform matrix
matrix = mImgProc.getPerspectiveTransform(pts_src, pts_dst)
' Create destination Mat
dstMat.Initialize()
Dim size As OCVSize
size.Initialize(src_points(0))
size.width= wid
size.height= hite
' Apply perspective warp
mImgProc.warpPerspective2(srcMat, dstMat, matrix, size)
' Convert result back to bitmap
dstBitmap.InitializeMutable(wid, hite)
mUtils.matToBitmap(dstMat, dstBitmap, False)
' Display the result
Dim iv As ImageView
iv.Initialize("iv")
Activity.AddView(iv, 0, 30%y, 100%x, 95%y)
iv.Bitmap = dstBitmap
' Clean up (important for memory management)
pts_src.release()
pts_dst.release()
matrix.release()