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#混合编程文章目录 在我的上一篇文章[ ...
随机推荐
- SQL执行计划解读
声明 5.6中desc看不到show warnings,也看不到filtered列 5.7的desc等于5.6的desc extended,这样可以看show warnings,5.6中filtere ...
- JavaScript将字典序升序排列类似php中的ksort函数
/** * 将json数据进行排序 * @param {*jason} data */ export function JsonSort(jsonData) { try { let tempJsonO ...
- android studio/Intellij IDEA(MAC OSX)中android模拟器无法启动的一种原因
翻了stackoverflow上好多方式,各种重装重启清理缓存,都没有效果. 后来发现,用IDEA创建的模拟器的路径是 /Users/xirtam/.android/avd 而IDE使用的路径是 AN ...
- [Python] Print input and output in table
Print the input and output in a table using prettyTable. from prettytable import PrettyTable import ...
- python操作wifi
python连接wifi需要使用pywifi包,可以用pip install pywifi安装 1.导入包 import pywifi,time #保存包中写义的常量 from pywifi impo ...
- beego 初体验 - 参数与传值
beego 支持 restful 风格的 url 传值分为路由传值和表单传值,表单传值可以绑定实体对象 1行 :id/:date 就是路由传值 2.3行是表单传值的路由配置 后台如何接收? 这是con ...
- HTML5 元素属性介绍
HTMLElement 表示所有的 HTML 元素. 这里将以事件属性和非事件属性的分类进行介绍. 事件属性大多继承自GlobalEventHandlers,非事件属性大多继承自Element. 菜单 ...
- python3内置的tkinter参数释疑
最近涉及到需要实现一个桌面UI的小游戏,所以就翻看了一些文档. 当然有介绍使用pyQT5的,但是本机安装的是python3.4,不想卸载掉这个版本,暂时还不能使用pyQT5. pyQT5需要pytho ...
- web前端学习历程--排序
一.js排序方法 1.按字母顺序排列: arr.sort() 2.按数值从小到大: function sortNumber(a,b)//排序函数 { return a - b } var arr = ...
- uvm设计分析——reg
项目中的reg_model一般只有一份,set到reg_sequence上,所以多个sequence并行启动结束的时候,reg model会成为一个共享资源. uvm_reg_field中的volat ...