opencv的resize和matlab的imresize函数的计算
在用c++代码复现matlab代码时,遇到两者resize函数的结果不相同的问题。
opencv:
resize(image1, reTmp, Size(, ), , , cv::INTER_LINEAR);
matlab:
tmp=imresize(img,[ ],'bilinear','AntiAliasing',false);
以一张500×396的彩色图片为例,resize到(50,50):

matlab imresize代码:
img=imread('image/cluo.jpg');
img=single(img);
for i=:
fprintf('%.6f ',img(,i,));
end
fprintf('\n');
tmp=imresize(img,[ ],'bilinear','AntiAliasing',false);
for i=:
fprintf('%.6f ',tmp(,i,));
end
c++ resize代码:
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std; void main()
{
Mat image = imread("cluo.jpg");
Mat image1(image.rows, image.cols, CV_32FC3);
for (int i = ; i < image.rows; i++)
for (int j = ; j < image.cols; j++)
{
image1.at<Vec3f>(i, j)[] = image.at<Vec3b>(i, j)[];
image1.at<Vec3f>(i, j)[] = image.at<Vec3b>(i, j)[];
image1.at<Vec3f>(i, j)[] = image.at<Vec3b>(i, j)[];
} //打印输出resize前r通道前10个像素点的坐标
for (int i = ; i < ; i++)
printf("%.6f ", image1.at<Vec3f>(, i)[]);
printf("\n");
Mat reTmp;
resize(image1, reTmp, Size(, ), , , cv::INTER_LINEAR);
//resize(image1, reTmp, Size(50, 50), 0, 0, cv::INTER_NEAREST);
//打印输出resize后r通道前10个像素点的坐标
for (int i = ; i < ; i++)
printf("%f ", reTmp.at<Vec3f>(, i)[]);
printf("\n"); system("pause");
}
结果比较:


结果基本相同
matlab中默认的 tmp=imresize(img,[50 50],'bilinear'); 函数是打开了抗锯齿 结果和opencv中的INTER_LINEAR不相同

matlab 和 opencv中 nearest 方式的结果比较:
c++: resize(image1, reTmp, Size(50, 50), 0, 0, cv::INTER_NEAREST);

matlab: tmp=imresize(img,[50 50],'nearest');

matlab: tmp=imresize(img,[50 50],'nearest','AntiAliasing',false);

结果不相同
opencv的resize和matlab的imresize函数的计算的更多相关文章
- paper 121 :matlab中imresize函数
转自:http://www.cnblogs.com/rong86/p/3558344.html matlab中函数imresize简介: 函数功能:该函数用于对图像做缩放处理. 调用格式: B = i ...
- MATLAB 用 imresize() 函数缩小图象是 double 和 uint8 有差别
今天发现一个奇怪的现象. 在用 imresize() 缩小图象时,如果图象时 double 格式的,缩小后会产生不连通的现象. 下面是原图: 对这张图象 img 做 simg = imresize(i ...
- opencv通过dll调用matlab函数,图片作为参数
[blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数 前文介绍了如何“csharp通过dll调用opencv函数,图片作为参数”.而在实 ...
- opencv 图像resize
这是文档中的函数原型 cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) 参数说明src:要resize的原图,应该是一个矩阵 dsi ...
- MATLAB的边缘检测函数中隐含的细化(非极大值抑制)算法
前段时间做了一个车牌检测识别的项目,我的任务是将MATLAB中的算法移植成C++代码.在车牌区域提取的过程中,用到了水平方向的Sobel算子检测垂直边缘,一开始我直接把MATLAB中的 bw = ed ...
- matlab中patch函数的用法
http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...
- Matlab基本函数-conj函数
Matlab基本函数-conj函数 1.conj函数:用于计算复数的共轭值 2.用法说明:y=conj(x)函数计算复数x的共轭值.输出结果y的维数跟输入x的维数一致,返回值为:real(y)-i*i ...
- 【原创】Matlab.NET混合编程技巧之找出Matlab内置函数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 Matlab与.N ...
- 【原创】Matlab.NET混合编程技巧之直接调用Matlab内置函数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 在我的上一篇文章[ ...
随机推荐
- elastricsearch学习笔记
一.基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意 ...
- [ssh] 通过ssh私钥生成公钥的方法
ssh-keygen -y -f .ssh/id_rsa.key id_rsa.key是私钥.
- Interllij IDEA中启动web项目
1.在IDEA中打开你的Web应用,点击一下绿色三角形左边的框框,然后在弹出框上选择Edit Configurations,会弹出一个配置面板. 2.在弹出的面板中我们点击Defaults,然后找到T ...
- Django中一个项目使用多个数据库
在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接. 参考:http://blog.csdn.net/songfree ...
- 5.0-uC/OS-III时间管理
1.时间管理 uC/OS-III为用户提供了与时间管理相关的服务. 在uC/OS-III中设置了能提供时基中断的中断源.该中断源提供 10Hz 到 1000Hz 之间的中断(需设置OS_CFG_APP ...
- [转]有return的情况下try catch finally的执行顺序
结论: 1.不管有没有出现异常,finally块中代码都会执行: 2.当try和catch中有return时,finally仍然会执行: 3.finally是在return后面的表达式运算后执行的(此 ...
- 家庭记账本之微信小程序(二)
在网上查阅了资料后,了解到了在完成微信小程序之前要完成注册阶段的工作,此次在这介绍注册阶段的流程. 1.首先你要确定小程序的定位.目的以及文案资料等(准备工作). 2.打开微信公众平台官网,点击右上角 ...
- php 实现简拼
<blockquote>model::::::::::::::::::::::::::::: function getFirstCharter($str){if(empty($str)){ ...
- phpcms内容页替换
一.浏览次数替换 <script type="text/javascript" src="{JS_PATH}js/jquery-1.11.2.min.js" ...
- CentOS 7 配置Tomcat9连接MySQL
配置Tomcat 首先安装Tomcat 安装Tomcat分为安装Tomcat和安装JDK两个步骤 JDK( Java Development Kit ) 是Sun Microsystems针对Java ...