实验4使用数组.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验4使用数组实验目的掌握数组的使用方法;数组的遍历和数组元素的操作;动态分配一维和二维数组实验内容下面的代码已经将一幅图像“Fruits.jpg”读入到内存中。图像的大小是height行,width列像素,每个像素占一个字节,类型是unsigned char的整数(即在区间[0,255]内)。图像数据存储在一维指针img_data指向的内存区,每一行所占的字节数是width_step。因此,第i行第j列像素的下标是[width_step*i+j]。请编程实现:判断width_step是否等于列数*每个元素所占字节数。动态分配二维数组a,将图像数据读入a中。即实现函数ReadImageData。将数组a的元素上下翻转。即第一行变为最后一行。即实现函数FlipImageUpDown。将变换后的数组a再写回img_data所指的内存里。即实现函数WriteImageData。如果以上步骤正确,会显示翻转后的图像。将数组a的元素左右翻转。即第一列变为最后一列。即实现函数FlipImageLeftRight。将变换后的数组a再写回img_data所指的内存里。即调用函数WriteImageData。如果以上步骤正确,会显示翻转后的图像。将图像缩小为原来尺寸的一半,存入动态分配内存的二维数组b。一个简单的做法是将a中的属于奇数行和奇数列的元素读取写入到b中。#include cv.h#include highgui.h?void ReadImageData(unsigned char *src, int rows, int cols, intwidth_step, unsigned char **dst){}void WriteImageData(unsigned char **src,int rows, int cols, intwidth_step, unsigned char *dst){}void FlipImageUpDown(unsigned char **img, int rows, int cols){}void FlipImageLeftRight(unsigned char **img, int rows, int cols){}int main(intargc,char*argv[]){IplImage* img = cvLoadImage(Fruits.jpg, CV_LOAD_IMAGE_GRAYSCALE);cvNamedWindow(Image,CV_WINDOW_AUTOSIZE);//创建窗口cvShowImage(Image,img);//显示图像? cvWaitKey(0);//等待按键 unsigned char *img_data = (unsigned char *)(img-imageData);//读取图像int height = img-height;//获取图像高度(行数)int width = img-width;//获取图像宽度(列数)intwidth_step = img-widthStep;//获取图像每行所占的字节数//判断width_step是否等于列数*每个元素所占字节数// write your code here// 声明二维数组a,大小是height*width,unsigned char类型;// write your code here// 读取图像数据到二维数组a中,实现函数ReadImageData// 比如这样调用ReadImageData(img_data, height, width, width_step, a);// write your code here// 上下翻转图像// write your code here// 调用FlipImageUpDown// write your code here// 将数组a的数据写回源图像的内存区(img_data指针所指的区域),即调用WriteImageData// write your code herecvShowImage(Image,img);cvWaitKey(0);//等待按键// 左右翻转图像//调用FlipImageLeftRight// write your code here//调用WriteImageData?cvShowImage(Image,img);cvWaitKey(0);//等待按键/// 动态分配二维数组b,用来存储缩小后的图像// write your code here/// 将原图缩小为原尺寸的一半,结果存入b中,添加相应的函数实现// write your code hereIplImage*img2 = cvCreateImage(cvSize(

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档