Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 2088

How to use createThinPlateSplineShapeTransformer with Python?

$
0
0
I am trying to warp some irregular shapes from images to rectangles to ease processing and make the objects in the shape easier to visually inspect, and I am having troubles with the Python implementation of openCV createThinPlateSplineShapeTransformer. I have read the answers here, with a full C++ implementation and here, with an uncomplete Python, but I am unable to make it work. This is what I am doing, for testing purpose I am converting a square shape into the very same square with one of its corners displaced: pts1 = [] pts1.append((0,0)) pts1.append((10,0)) pts1.append((10,10)) pts1.append((0,10)) pts2 = [] pts2.append((0,0)) pts2.append((10,0)) pts2.append((20,10)) pts2.append((0,10)) P1 = np.array(pts1,np.int32) P2 = np.array(pts1,np.int32) P1 = P1.reshape((-1,4,2)) P2 = P2.reshape((-1,4,2)) matches = [] for i in range(4): matches.append(cv2.DMatch(i,i,0)) tps.estimateTransformation(P1,P2,matches) So far so good, even though I do not understand the format of the input points. But when I try to transform any points, the result is always [0,0] (or something by e-44): tps.applyTransformation(P1) (0.0, array([[[ 0.00000000e+00, 0.00000000e+00], [ 1.40129846e-44, 0.00000000e+00], [ 1.40129846e-44, 1.40129846e-44], [ 0.00000000e+00, 1.40129846e-44]]], dtype=float32)) What am I doing wrong?

Viewing all articles
Browse latest Browse all 2088

Trending Articles