【OpenCV入门指南】第二篇 缩放图像

opencv学习笔记(十):图像缩放、平移、旋转变换理论推导及应用 接下来的平移变换和旋转变换其实都属于仿射变换,它们可以用变换矩阵达到目的,故二者使用的核心函数都是warpAffine函数,只不过平移变换的变换矩阵很简单容易求出,而且平移变换只涉及水平、竖直两个方向;而旋转变换则涉及旋转中心、旋转角度等,其对应的变换矩阵无法一眼求出,需要借助相关函数,这就是二者在使用过程中的区别。 阅读详情

【OpenCV入门指南】第二篇 缩放图像

上一篇《【OpenCV入门指南】第一篇安装OpenCV》讲解了如何在VS2008下安装和配置OpenCV,本篇将介绍使用OpenCV来缩放图片。首先介绍几个关键函数——cvResize和cvCreateImage

《OpenCV入门指南》系列文章地址:http://blog.youkuaiyun.com/morewindows/article/category/1291764

 一. 主要函数介绍

1.1 cvResize

函数功能:图像大小变换

函数原型:

voidcvResize(

  const CvArr* src,

  CvArr* dst,

  intinterpolation=CV_INTER_LINEAR

);

函数说明:

第一个参数表示输入图像。

第二个参数表示输出图像。

第三个参数表示插值方法,可以有以下四种:

CV_INTER_NN - 最近邻插值,

CV_INTER_LINEAR - 双线性插值 (缺省使用)

CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法..

CV_INTER_CUBIC - 立方插值.

这个函数在功能上与Win32 API中的StretchBlt()函数类似。

 

1.2 cvCreateImage

函数功能:创建图像

函数原型:

IplImage* cvCreateImage(CvSize size, intdepth, intchannels);

函数说明:

第一个参数表示图像的大小。

第二个参数表示图像的深度,可以为IPL_DEPTH_8U,IPL_DEPTH_16U等等。

第三个参数表示图像的通道数。

 

二. 示例程序代码

有了这二个函数后,不难写出代码:

//缩放图像文件
//By MoreWindows (http://blog.youkuaiyun.com/MoreWindows)
#include <opencv2/opencv.hpp>
using namespace std;
//隐藏控制台窗口
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
int main()
{
	const char *pstrImageName = "冲浪大师赛001.jpg";
	const char *pstrSaveImageName = "冲浪大师赛001缩放图.jpg";
	const char *pstrWindowsSrcTitle = "原图 (http://blog.youkuaiyun.com/MoreWindows)";
	const char *pstrWindowsDstTitle = "缩放图 (http://blog.youkuaiyun.com/MoreWindows)";
	
	double fScale = 0.314;		//缩放倍数
	CvSize czSize;			    //目标图像尺寸
	
	//从文件中读取图像  
	IplImage *pSrcImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
	IplImage *pDstImage = NULL;	
	
	//计算目标图像大小
	czSize.width = pSrcImage->width * fScale;
	czSize.height = pSrcImage->height * fScale;
	
	//创建图像并缩放
	pDstImage = cvCreateImage(czSize, pSrcImage->depth, pSrcImage->nChannels);
	cvResize(pSrcImage, pDstImage, CV_INTER_AREA);
	
	//创建窗口
	cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE);
	cvNamedWindow(pstrWindowsDstTitle, CV_WINDOW_AUTOSIZE);
	
	//在指定窗口中显示图像
	cvShowImage(pstrWindowsSrcTitle, pSrcImage);
	cvShowImage(pstrWindowsDstTitle, pDstImage);
	
	//等待按键事件
	cvWaitKey();
	
	//保存图片
	cvSaveImage(pstrSaveImageName, pDstImage);
	
	cvDestroyWindow(pstrWindowsSrcTitle);
	cvDestroyWindow(pstrWindowsDstTitle);
	cvReleaseImage(&pSrcImage);
	cvReleaseImage(&pDstImage);
	return 0;
}

程序运行结果如下:

本篇介绍的图像缩放比较容易,下一篇《【OpenCV入门指南】第三篇Canny边缘检测》将介绍在OpenCV中使用Canny算子对图像进行边缘检测,欢迎继续浏览。


 

转载请标明出处,原文地址:http://blog.youkuaiyun.com/morewindows/article/details/8239560

《OpenCV入门指南》系列文章地址:http://blog.youkuaiyun.com/morewindows/article/category/1291764

OpenCV_图像旋转与缩放 下面这份代码用于实现对图像的缩放与旋转。 OpenCV版本:2.4.2 // 图像旋转与缩放 // Author: www.icvpr.com // Blog: http://blog.youkuaiyun.com/icvpr #include #include #include int main(int argc, char** argv) { cv:: 阅读详情

相关推荐

07. 基础实战篇 - STP的基本配置

STP(生成数协议)是一个用于在局域网中消除环路的协议,他的标准是IEEE802.1d。STP通过强制使部分冗余链路处于阻塞状态,其它链路处于转发状态,将环形网络结构修剪成无环路的树形网络结构。可实现消除环路,当处于转发状态的链路不可用时,STP重新配置网络,并激活合适的备用链路状态,恢复网络连通性。

weixin_39868387的博客 7225

OpenCV中图像的缩放与旋转讲解及实战演示(附Python源码)

OpenCV中图像的缩放与旋转讲解及实战演示(附Python源码)

showswoller的博客 3854

MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境)

本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。

ol78901234的博客 311

opencv 图像的缩放(放大,缩小),翻转,旋转

例如,对于一个2倍放大的操作,像素的坐标会变成原来的两倍,如1.5、3.7等。opencv 最常用的图像旋转方法是使用 cv::warpAffine() 函数,它需要指定输出图像的大小,和插值算法;opencv 最常用的图像缩放方法是使用 cv2::resize() 函数,它需要指定输出图像的大小,和插值算法;opencv 最常用的图像翻转方法是使用 cv::flip() 函数,它需要指定图像翻转方式;通过使用适当的插值方法,可以确保图像在变换过程中保持合理的视觉品质和准确性;

每一个不曾起舞的日子,都是对生命的辜负 8554

ElaticSearchUtil工具类封装

package com.xxx.util; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; import org.elasticsearch.action.admin.indices.analyze.AnalyzeAction; import org.elasticsearch.action.ad

会飞的狼 6295

Kile5报错—> ARM-Compiler ‘Default Compiler Version 5‘ which is not available安装使用Compiler Version 5 的办法

Kile5报错—> ARM-Compiler ‘Default Compiler Version 5‘ which is not available安装使用Compiler Version 5 的办法

weixin_72050316的博客 1181

(opencv)图像几何变换——缩放

等间隔提取图像缩放是通过对源图像进行均匀采样来完成的。对于源图像数据f(x,y),其分辨率为M*N,如果将其分辨率改变成m*n,对于等间隔采样而言,其宽度缩放因子k1=m/M,高度缩放因子k2=n/N,对于图像而言,图像缩放在其水平方向的等间隔采样为k1,垂直方向上的等间隔采样为k2。若满足k1=k2,源图像数据将等比例缩放,否则源图像数据的宽度和高度将发生不同程度的缩放,造成图像变形扭曲现象。区域子块提取图像缩放是通过对源图像进行区域子块划分,然后提取子块中像素值作为采样像素以构成新图像来实现的。

yangSHU21的博客 4597

基于A*算法的二维栅格地图路径规划与避障MATLAB仿真

本文将介绍如何使用MATLAB编写基于A*算法的二维栅格地图路径规划与避障的仿真程序。我们可以使用二维数组表示地图,其中每个元素表示一个栅格的状态,例如1表示障碍物,0表示可行走区域。接下来,我们需要定义A*算法的节点类。G值表示从起始节点到当前节点的代价,H值是启发式函数估计的从当前节点到目标节点的代价。算法,我们可以有效地找到起始点到目标点的最短路径,并在仿真中进行可视化展示。算法的基本思路是从起始节点开始,按照一定的启发式函数选择下一个节点,直到找到目标节点或者遍历完所有可行走区域。

ByteWhizX的博客 1273

OpenCV 图像旋转、平移、缩放

本文是 OpenCV图像视觉入门之路的第7篇文章,本文详细的进行了图像的缩放 cv2.resize()、旋转 cv2.flip()、平移 cv2.warpAffine()等操作。

断点 3127

cadence中利用sva进行FPV实战(可直接使用)

在cadence中使用fpv进行formal验证

youzjuer的博客 749

webrtc进阶-- FlexFEC 实现原理与调试分析(m80 代码对齐版)

WebRTC 中 FlexFEC 技术解析与调试指南 摘要:本文深入分析 WebRTC 的 FlexFEC(灵活前向纠错)技术实现原理,重点探讨其在 m80 版本中的协商机制、接收侧恢复流程以及 SFU 场景下的特殊处理。文章指出 FlexFEC 通过动态冗余策略提升弱网抗丢包能力,详细解析了编解码器分配、SSRC 映射、包恢复等关键环节,并提供了针对 XR+SFU 场景的调试建议。调试时可重点关注 FEC 包接收与媒体包恢复日志,以验证链路有效性。

HOSTEN的博客 48

Opencv(十一) : 图像缩放

Opencv中图像缩放的内容

Mrliu__的博客 1939

白话机器学习算法理论+实战番外篇之Xgboost

1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Adaboost等 无监督算法:聚类,降维,关联规则, PageRank等 我前面已经尝试用最白话的语言完成了一个白话机器学习算法理论+实战系列,这个系列已经基本包含了上面这些算...

Miracle8070 1万+
上一篇: 【OpenCV入门指南】第一篇 安装OpenCV
下一篇: 【OpenCV入门指南】第三篇Canny边缘检测
MoreWindows
MoreWindows 《白话经典算法》、《秒杀多线程》作者 《白话经典算法》、《秒杀多线程》作者 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄15年 2万+粉丝 157原创
评论 29
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值