Form Transformers and OpenCV3.0 Interfaces

I tried to use the new Shape Transformers and OpenCV3.0 interfaces. Unfortunately, it does not work properly. In order not to create any bizarre skews and get strange results for this reason, I initiated a transformation in which nothing should happen. But the conversion output for the control point is always [0,0], and the distorted image is always completely gray. Any suggestions that may be incorrect are welcome.

int main(void){ Mat img1 = imread("C:\\opencv\\sources\\samples\\data\\graf1.png", IMREAD_GRAYSCALE); std::vector<cv::Point2f> points1, testpoints; vector<DMatch> good_matches; Mat respic, resmat; points1.push_back(Point(0, 0)); //Corners 800x600 pic points1.push_back(Point(799, 0)); points1.push_back(Point(799, 599)); points1.push_back(Point(0, 599)); Mat pointmatrix1(points1); good_matches.push_back(DMatch(0, 0, 0)); good_matches.push_back(DMatch(1, 1, 0)); good_matches.push_back(DMatch(2, 2, 0)); good_matches.push_back(DMatch(3, 3, 0)); testpoints.push_back(Point(250, 250)); Mat testpointsmat(testpoints); // Apply TPS Ptr<ThinPlateSplineShapeTransformer> mytps = createThinPlateSplineShapeTransformer(0); mytps->estimateTransformation(pointmatrix1, pointmatrix1, good_matches); // Using same pointmatrix nothing should change in res mytps->applyTransformation(testpointsmat, resmat); cout << "pointmatrix1 = " << endl << " " << pointmatrix1 << endl << endl; cout << "testpointsmat = " << endl << " " << testpointsmat << endl << endl; cout << "resmat = " << endl << " " << resmat << endl << endl; //Always [0,0] ? imshow("img1", img1); // Just to see if I have a good picture mytps->warpImage(img1, respic); imwrite("Tranformed.png", respic); imshow("Tranformed", respic); //Always completley grey ? waitKey(0); return 0; } 
+2
source share
1 answer

Do not ask me why, but if I add two lines, it will work.

 // Apply TPS transpose(pointmatrix1, pointmatrix1); // ADD transpose(testpoints, testpoints); // ADD Ptr<ThinPlateSplineShapeTransformer> mytps = createThinPlateSplineShapeTransformer(0); 

Now there is something strange in the source here> why cols and not strings.

from LBerger

+2
source

All Articles