OpenCV 图像调整大小与 matlab 的比较
OpenCV image resize comparison to matlab
这是我的函数
int* Utilities::MatlabImresize(int* channel,int width, int height, double scale)
{
cv::Mat src(width, height, CV_32F);
for (int i = 0; i < width * height; ++i)
{
src.at<float>(i) = channel[i];
}
cv::Mat dst;
cv::resize(src, dst, cv::Size(), 0.5, 0.5,cv::INTER_CUBIC);
ofstream myfile;
myfile.open("C:\Users\gdarmon\Desktop\OpenCV_CR.txt");
myfile << dst;
myfile.close();
return NULL;
}
正如我在上一个问题中所讨论的 imresize - trying to understand the bicubic interpolation
我用 -0.5f
而不是 -0.75f
重新编译了 openCV
尽管输入相同,但我仍然得到不同的结果,我想我使用的 resize() 函数有误...你能帮忙吗?
matlab代码就是
Gr = imresize(Gr, 0,5);
对 OpenCV 的更改只会使插值内核的公式匹配。它不启用抗锯齿。此处的结果将匹配
imresize(A,scale,'bicubic','AntiAliasing',false)
要匹配默认值,您需要进一步修改内核,使其更广泛。
这是我的函数
int* Utilities::MatlabImresize(int* channel,int width, int height, double scale)
{
cv::Mat src(width, height, CV_32F);
for (int i = 0; i < width * height; ++i)
{
src.at<float>(i) = channel[i];
}
cv::Mat dst;
cv::resize(src, dst, cv::Size(), 0.5, 0.5,cv::INTER_CUBIC);
ofstream myfile;
myfile.open("C:\Users\gdarmon\Desktop\OpenCV_CR.txt");
myfile << dst;
myfile.close();
return NULL;
}
正如我在上一个问题中所讨论的 imresize - trying to understand the bicubic interpolation
我用 -0.5f
而不是 -0.75f
尽管输入相同,但我仍然得到不同的结果,我想我使用的 resize() 函数有误...你能帮忙吗?
matlab代码就是
Gr = imresize(Gr, 0,5);
对 OpenCV 的更改只会使插值内核的公式匹配。它不启用抗锯齿。此处的结果将匹配
imresize(A,scale,'bicubic','AntiAliasing',false)
要匹配默认值,您需要进一步修改内核,使其更广泛。