opencv学习(二)书本《学习Opencv》(中文版)第二章的习题试着做做(opencv3.0.0+VS2012+win7)

由于是opencv3.0.0,所以文件夹的结构和书上说的并不一样,找opencv.sln就找不到。

因此前几题几乎没法做,直接做最后一题看看吧

因为看错题目了,以为是把静止的图像缩放,其实是把视频缩放,不过原理差不多

关键是缩放的时候只能够缩放2倍4倍和8倍,再多就不行了,缩放的方法是重复嵌套缩放多次,所以才只有3个阶段啊。

源码:

#include "cv.h"
#include "highgui.h"

int		   g_size			 = 2;
int		   max_size			 = 8;
int		   min_size          = 2;

void onTrackbarSlide(int size) {
    g_size = size;
}

IplImage* doPyrDown( IplImage* in, int filter = CV_GAUSSIAN_5x5)
{
    // Best to make sure input image is divisible by two.
    //
   assert( in->width%2 == 0 && in->height%2 == 0 );

    IplImage* out = cvCreateImage( 
        cvSize( in->width/2, in->height/2 ),
        in->depth,
        in->nChannels
    );
    cvPyrDown( in, out );
    return( out );
};

int main( int argc, char** argv )
{
	IplImage* img = cvLoadImage( argv[1] );
	IplImage* img2 = cvCreateImage( cvSize( img->width,img->height ), img->depth, img->nChannels);
    cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE );
	cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE );
	cvShowImage("Example1", img );
	cvShowImage("Example2", img2 );
	cvCreateTrackbar( "size","Example1",&g_size,max_size, onTrackbarSlide );
    while(1) {
		img2 = doPyrDown( img );
		for(int i=2;i<g_size;i++)
		{
			img2 = doPyrDown( img2 );
		}
        cvShowImage( "Example2", img2 );
        char c = (char)cvWaitKey(33);
        if( c == 27 ) break;
    }
	cvReleaseImage( &img );
	cvReleaseImage( &img2 );
	cvDestroyWindow("Example1");
	cvDestroyWindow("Example2");
}

难度还是有一点的,主要是自己知道的太少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值