C#图像插值算法
时间:2022-07-23
本文章向大家介绍C#图像插值算法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
重置图像和大小
高斯金字塔是固定比例来改变图像的分辨率,有些时候我们的需求并非
是长和宽缩放比例都一样,所以接来介绍任意比例缩放,来改变图像的分辨
率。
EmguCv 实现:
EmguCv 可以通过CvInvoke 类里面的方法来实现高斯金字塔,也可以通
过Image<TColor,TDepth> method 来实现,这边主要讲解前者。
Resize()函数介绍:
public static void Resize(IInputArray src, IOutputArray dst, Size dsize,
double fx = 0, double fy = 0, Inter interpolation = Inter.Linear);//指定比例缩放图
像。
参数解析:
IInputArray src:输入图像,即原图像。
IOutputArray dst:输出图像,采样后得到的图像。
Size dsize:输出图像的大小,如果这边dsize 为0,则输出图像大
小有fx 和fy 决定。同时说明dsize 的权大于fx,fy。
dsize=Size(round(fx*scr.cols),round(fy*scr.rows));其中fx!=0,fy!=0。
double fx = 0:水平缩放比例。
double fy = 0:垂直缩放比例。
Inter interpMethod = Inter.Linear:插值类型的标识符,具体如表
实现代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
namespace WindowsFormsApp28
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Mat scr = new Mat(@"C:UserslinDesktopimagelena.jpg", LoadImageType.AnyColor);
Mat dst = new Mat();
//CvInvoke.Resize(scr, dst, new Size(150, 200), 0, 0, Inter.Cubic);//三次样条插值
CvInvoke.Resize(scr, dst, new Size(150, 200), 0, 0, Inter.Lanczos4);//兰索斯算法插值
label1.Text = "size:" + scr.Size.ToString();
label2.Text = "size:" + dst.Size.ToString();
imageBox1.Image = scr;
imageBox2.Image = dst;
}
}
}
- Go语言实现控制台贪吃蛇
- 容灾半自动化的实现思路(二) (r7笔记第93天)
- Go 谚语
- DBA和开发同事的一些代沟(五) (r7笔记第92天)
- 55. 上传文件(Web版) | 厚土Go学习笔记
- ASM无法启动的问题分析(一)(r7笔记第87天)
- 54. 心跳的实现 | 厚土Go学习笔记
- 53. Socket服务三次握手的示例 | 厚土Go学习笔记
- 使用Beego+Swagger构建更好的API服务
- ASM无法启动的问题分析(二)(r7笔记第88天)
- 43. 等价二叉树 | 厚土Go学习笔记
- 51. Socket服务端和客户端使用TCP协议通讯 | 厚土Go学习笔记
- 50. RESTful API的简单实现 | 厚土Go学习笔记
- go实现西瓜视频花椒直播等平台智能答题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- IE11出现"__doPostBack”未定义
- latex()、ploy2sym()、symsum()的妙用
- 性能最佳实践:MongoDB数据建模和内存大小调整
- 节省你生命的一个小技术No.193
- K8S 生态周报| Traefik v2.3.0-rc2 发布
- 如何从 Notion 批量导出 Markdown?
- 【LeetCode】1518. 换酒问题
- OBS推流工具使用说明
- Python多进程
- app反编译遇到360加固,傻瓜式脱壳
- Java底层-本地接口(JNI)
- 如何从最坏、平均、最好的情况分析复杂度?
- 利用Python进行MR栅格数据处理
- 利用Sql处理MR栅格数据
- Netty组件之Channel注册