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#混合编程文章目录 在我的上一篇文章[ ...
随机推荐
- 2019年3月8日A股百点暴跌行情思考
本人操作: [海通证券]:早盘挂单并撤单,盘中高位卖出,尾盘低位接回. 总结 - 正确:持股数量不变,成本降低. [信雅达]:早盘低开加仓,盘中高位卖出,跌后接回,尾盘跌停. 总结 - 正确:加仓, ...
- 转:解决tomcat服务器跨域问题
原文地址: 解决tomcat服务器跨域请求问题 注:还未测试 在tomcat 的web.xml 配置文件中加入如下配置过滤器 (如web.xml中有多个filter时要把下面配置放在最前端) < ...
- array_merge() 用法
array_merge() 函数把两个或多个数组合并为一个数组. 如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的).如果数组是数字索引的,则键名会以连续方式重新索引. 注释:如果仅 ...
- Redis的数据结构之字符串
五种数据类型: 字符串(String) 字符串列表(list) 有序字符串集合(sorted set) 哈希(hash) 字符串集合(set) Key定义的注意点: 不要过长, 不要过短, 统一的命名 ...
- Spring的bean管理(注解方式)
注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...
- python框架之Flask(4)-上下文管理
知识储备 偏函数 作用 偏函数,帮助开发者自动传递参数. 使用 import functools def index(a1, a2): return a1 + a2 # 原来的调用方式 # ret = ...
- C#设计模式(2)——简单工厂模式(转)
C#设计模式(2)——简单工厂模式 一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理 ...
- oracle中实现某个用户truncate 其它用户下的表
oracle文档中对truncate权限的要求是需要某表在当前登录的用户下,或者当前登录的用户有drop any table的权限. 但是如果不满足第一个条件的情况下,要让某用户满足第二个条件就导致权 ...
- 解救小哈——dfs深搜
问题描述: 小哈去玩迷宫,结果迷路了,小哼去救小哈.迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 问题:帮小哼找到一条从迷宫的起点通往小哈所在位置的最短路径 ...
- spring boot + vue + element-ui全栈开发入门——主页面开发
目的 开发一个后台管理的前端,顶部是标题,左侧是菜单导航栏,中间是要显示的内容.而内容可以是各种图表,也可以是数据列表. 一.准备工作 1..修改App.vue文件 代码如下: <templat ...