OpenCV图像的缩放

函数介绍:
    1.cvResize 改变图像大小

    void cvResize(const CvArr *src, CvArr *dst, int interpolation)
    函数说明:
    第一个参数表示输入图像。
    第二个参数表示输出图像。
    第三个参数表示插值方法,可以有以下四种:

    CV_INTER_NN - 最近邻插值,
    CV_INTER_LINEAR - 双线性插值 (缺省使用)
    CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于     CV_INTER_NN 方法..
    CV_INTER_CUBIC - 立方插值.

    2.cvCreateImage(CvSize size, int depth, int channels)

    函数说明:
    第一个参数表示图像的大小。
    第二个参数表示图像的深度,可以为IPL_DEPTH_8U,IPL_DEPTH_16U等等。
    第三个参数表示图像的通道数。

#include "stdafx.h"
#include "iostream"
using namespace std;
#include "opencv2/opencv.hpp"

int main()
{
    const char *pImagePath = "E:/C_VC_code/Text_Photo/girl001.jpg";
    const char *pWindowsTitle = "MyFirst OpenCV";

    //load image from file
    IplImage *pImage = cvLoadImage(pImagePath,CV_LOAD_IMAGE_UNCHANGED);

    //create window
    cvNamedWindow(pWindowsTitle,CV_WINDOW_AUTOSIZE);

    //show image on window
    cvShowImage(pWindowsTitle,pImage);
    //------------------------以上创建显示原图--------------------------------

    const char *pDstImageTitle = "Auto Image";
    double fScale = 0.5; //the mul of 缩放
    CvSize cvSize;       //the size of changed image

    IplImage *pDstImage = NULL;

    //count the size of destination image
    cvSize.width = pImage->width*fScale;
    cvSize.height = pImage->height*fScale;

    //create image and auto
    pDstImage = cvCreateImage(cvSize, pImage->depth, pImage->nChannels);
    cvResize(pImage, pDstImage ,CV_INTER_AREA);

    //create window and show image
    cvNamedWindow(pDstImageTitle,CV_WINDOW_AUTOSIZE);
    cvShowImage(pDstImageTitle,pDstImage);

    //------------------------以上缩放并显示缩放图片--------------------------

    //wait key event
    cvWaitKey(0);

    //destroy window and release space
    cvDestroyWindow(pWindowsTitle);
    cvReleaseImage(&pImage);
    return 0;
}

结果展示:

时间: 2024-10-07 14:06:21

OpenCV图像的缩放的相关文章

[转]OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

[OpenCV入门教程之十三]OpenCV图像金字塔:高斯金字塔.拉普拉斯金字塔与图片尺寸缩放 2014-05-18 18:58 36007人阅读 评论(54) 收藏 举报 本文章已收录于:  OpenCV知识库 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http

【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 这篇文章里,我们将一起探讨图像金字塔的一

opencv 图像row、col坐标对应关系

1.创建高斯金字塔第-1组 1.1.将源图片转成灰度图 void ConvertToGray(const Mat& src, Mat& dst) { cv::Size size = src.size(); if (dst.empty()) dst.create(size, CV_64F); //[1]利用Mat类的成员函数创建Mat容器 uchar* srcData = src.data; //[2]指向存储所有像素值的矩阵的数据区域 pixel_t* dstData = (pixel_t

关于图像高速缩放算法,目前看到的最好的最清晰的一篇文章

http://www.myexception.cn/image/1630385.html 关于图像快速缩放算法,目前看到的最好的最清晰的一篇文章 昨天开始写一个录制屏幕和声音存储为视频文件的程序,差不多完成了. 屏幕录制使用方法:抓屏(方法很多,BitBlt.DirectX.MirrorDriver等),缩放,X264压缩(开源的,自己封装) 声音录制使用方法:声卡采集PCM数据,AAC压缩(开源的,自己封装) 最后打包复用为MP4文件,可以使用ffmpeg或者mp4v2等. 经过断断续续一天的

opencv图像原地(不开辟新空间)顺时旋转90度

前一阵朋友碰到这么一道题:将图像原地顺时针旋转90度,不开辟新空间.此题看似平易(题目简短),仔细研究发现着实不容易.经过一番探索后,终于找到了正确的算法,但是当使用opencv实现时,有碰到了困难而且费了一番周折才找到问题所在. 首先,解决这个问题,先简化成原地90度旋转一M×N的矩阵A(注意不是N×N方阵).对于2×3的矩阵A = {1,2,3;4,5,6},其目标为矩阵B = {4,1;5,2;6,3}.因为是原地旋转,这里A和B应指向同一大小为6的内存空间. 这里有这样一个重要的导出公式

OpenCV —— 图像局部与部分分割(一)

背景减除 一旦背景模型建立,将背景模型和当前的图像进行比较,然后减去这些已知的背景信息,则剩下的目标物大致就是所求的前景目标了 缺点 -- 该方法基于一个不长成立的假设:所有像素点是独立的 场景建模 新的前景(物体移动的新位置) -- 旧的前景 (物体离开后留下的"空洞")-- 背景 cvInitLineIterator()  和  CV_NEXT_LINE_POINT() 对任意直线上的像素进行采样 // 从视频的一行中读出所有像素的RGB值,收集这些数值并将其分成三个文件 #inc

html5 canvas图像-图像的缩放

当用户选中复选框之后,应用程序则会重新绘制该图,将其放大,以符合canvas的尺寸. 1 <html> 2 <head> 3 <title>Scaling Images</title> 4 5 <style> 6 body { 7 background: rgba(100, 145, 250, 0.3); 8 } 9 10 #canvas { 11 margin-left: 20px; 12 margin-right: 0; 13 margin-

[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理

    前一篇文章讲述了Android拍照.截图.保存并显示在ImageView控件中,该篇文章继续讲述Android图像处理技术,主要操作包括:通过打开相册里的图片,使用Matrix对图像进行缩放.旋转.移动.对比度.亮度.饱和度操作,希望对大家有所帮助. 一. 显示打开图片     首先,设置activity_main.xml布局如下所示: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android

OpenCV &mdash;&mdash; 图像局部与分割(二)

分水岭算法 将图像中的边缘转化成"山脉",将均匀区域转化为"山谷" 分水岭算法首先计算灰度图像的梯度,这对山谷或没有纹理的盆地(亮度值低的点)的形成有效,也对山头或图像中没有主导线段的山脉(山脊对应的边缘)的形成有效.然后开始从用户指定点或算法得到的点开始"灌注"盆地知道这些区域连在一起.基于这样产生的标记就可以把区域合并到一起,合并后的区域又通过聚集的方式进行分割,好像图像被"填充"起来. cvWatershed 用 Inp