结果:

3、使用ROI和cvSet创建一个金字塔式的图

#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage * img = cvCreateImage(cvSize(210,210),IPL_DEPTH_8U,1);
cvZero(img);
int sclar;
int add;
int img_x, img_y;
sclar = 0;
add = 0;
img_x = 0;
img_y = 0;
while(add < 200)
{
//设置感兴趣区域
cvSetImageROI(img,cvRect(img_x, img_y, 210-sclar, 210-sclar));
cvSet(img, cvScalar(add));
img_x = img_x + 10;
img_y = img_y + 10;
add = add + 20;
sclar = sclar + 20;
//释放感兴趣区域
cvResetImageROI(img);
}
//显示图像
cvNamedWindow("Source");
cvShowImage("Source",img);
cvWaitKey(0);
cvDestroyWindow("Source");
cvReleaseImage(&img);
return 0;
}
结果:

4、针对一个一幅图像创建两个图像头,分别指向图像中的一个区域,再对两个图像头应用cvNot函数,然后显示图像
#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage * img = cvLoadImage("lena.jpg");
IplImage * imgHeaderA = cvCreateImageHeader(cvSize(20,30),img->depth, img->nChannels);
imgHeaderA->origin = img->origin;
imgHeaderA->widthStep = img->widthStep;
IplImage * imgHeaderB = cvCreateImageHeader(cvSize(20,30),img->depth, img->nChannels);
imgHeaderB->origin = img->origin;
imgHeaderB->widthStep = img->widthStep;
imgHeaderA->imageData = img->imageData + img->widthStep * 10 + img->nChannels * 5;
imgHeaderB->imageData = img->imageData + img->widthStep * 50 + img->nChannels * 60;
cvNot(imgHeaderA,imgHeaderA);
cvNot(imgHeaderB,imgHeaderB);
cvNamedWindow("show an image", CV_WINDOW_AUTOSIZE);
cvShowImage("show an image", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImageHeader(&imgHeaderA);
cvReleaseImageHeader(&imgHeaderB);
cvDestroyWindow("show an image");
return 0;
}结果:

本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-21538-2.html
面子上都过得去
绝对假的
爱你