我定义了一个包含2个值的数组,并尝试使用imgproc模块的resize函数将其调整为10个元素,采用线性插值作为插值方法。
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) << " ";
}
我预期的输出是:
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
我得到的是:
然而,我得到的是:
0 0 0 0.136364 0.318182 0.5 0.681818 0.863636 1 1 1
显然,我对resize的理解在基本层面上是错误的。请问有人能告诉我我哪里错了吗?尽管OpenCV对于这样简单的线性插值来说有些过度,但请您帮我指出在这里出了什么问题。
cv2.resize(np.array([[0.0,1.0]]), dsize=(11,1))
。 - dashesy