I currently have two matching point sets built into a numpy array of float32:
points1 =
[[ 346.70220947 9076.38476562]
[ 922.99554443 9096.4921875 ]
[ 776.96466064 9108.79101562]
[ 449.0173645 9080.61816406]
[ 2843.19433594 1226.93212891]
[ 779.95275879 9094.76855469]
[ 451.46853638 9092.5078125 ]
[ 3981.4621582 1237.50964355]
[ 132.38700867 9086.7890625 ]
[ 819.10943604 8286.74023438]
[ 1963.64025879 1220.06921387]
[ 1253.79321289 9095.75292969]]
points2 =
[[ 55110.36328125 9405.07519531]
[ 55686.71875 9423.63574219]
[ 55540.8515625 9435.80078125]
[ 55212.58203125 9408.00585938]
[ 57598.76171875 1551.92956543]
[ 55543.78125 9421.88769531]
[ 55214.40625 9420.46972656]
[ 58737.41796875 1561.14831543]
[ 54895.9296875 9414.58203125]
[ 55581.87109375 8613.87011719]
[ 56718.76953125 1546.02197266]
[ 56017.8125 9422.52050781]]
and I'm trying to run:
affine = cv2.estimateRigidTransform(points2,points1,True)
print affine
so that I can generate an affine matrix that can then be translated into a world file (.tfw). The world file is for GIS software that will project these on-the-fly.
At the moment I am getting an error:
Both input images must have either 8uC1 or 8uC3 type in function cvEstimateRigidTransform
I'm not really sure what's going on here. I thought I could use two points sets as parameters as long as I have 6 or more pairs.
Any thoughts or recommendations would be much appreciated!