I am defining an array of 2 values ββand trying to use the imgproc module resize function to change it by 10 elements with linear interpolation as an interpolation method.
cv::Mat input = cv::Mat(1, 2, CV_32F); input.at<float>(0, 0) = 0.f; input.at<float>(0, 1) = 1.f; cv::Mat output = cv::Mat(1, 11, CV_32F); cv::resize(input, output, output.size(), 0, 0, cv::INTER_LINEAR); for(int i=0; i<11; ++i) { std::cout<< output.at<float>(0, i) << " "; }
The result I would expect:
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
However, I get the following:
0 0 0 0.136364 0.318182 0.5 0.681818 0.863636 1 1 1
Clearly, my understanding of how resizing works is wrong at the fundamental level. Can someone please tell me what I am doing wrong? Admittedly, OpenCV is redundant for such a simple linear interpolation, but please help me with what's wrong here.
source share