ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:919.84KB ,
资源ID:8317502      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8317502.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(实验6 继承.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

实验6 继承.docx

1、实验6 继承 实验目的 掌握如何编写基类,如何通过继承基类的属性和函数编写派生类。 掌握如何在派生类成员函数中调用基类的成员函数。 掌握如何声明基类和派生类的对象,如何调用派生类对象的成员函数。 实验内容 1. 创建Matrix类,作为Image类的父类。下面的代码已把实验5里的Image类的数据成员“转移至”了父类Matrix中,并将Image类中适用于矩阵的操作“转移至”Matrix类。请完成Matrix类的相关成员函数和友元函数的实现。 2. 从Matrix类公有派生Image类,在Image类中实现一个新的构造函数,该构造函数由基类对象构造派生类对象。 3. 对派生

2、类的某些构造函数进行改造,使其能给基类构造函数传递参数完成基类成员的初始化。 4. 在main函数中完成对Matrix类和Image类成员函数的调用。 注意: 类Matrix中的数组类型是double,注意在派生类Image中如何把从图像文件里的数据类型从unsigned char转化为double。更重要的是,在对矩阵完成变换后存储成图像文件时,如何把数据类型再转换回unsigned char。在转换时如何对数据范围进行改变。 图像相加和相减后,结果图像的数据可能是负的或者大于255的,在写回图像文件时,应该处理这种情况。请参考后面的提示设计你的解决办法。 Matrix.h

3、ifndef Matrix_H #define Matrix_H class Matrix { public: Matrix(); Matrix(int h,int w); Matrix(int h, int w, double val); Matrix(const Matrix &m); ~Matrix(); void Zeros(int h, int w); // 根据参数产生h行w列的全零矩阵 void Ones(int h, int w); // 根据参数产生h行w列的全1矩阵 void Random(int h, int w); //产生h行w列的随

4、机矩阵,矩阵的元素为[0,1]之间的随机实数(double类型) void Identity(int n); // 根据参数产生n行n列的单位矩阵 int Height(); // 获得矩阵的行数 int Width(); // 获得矩阵的列数 Matrix MajorDiagonal();// 求矩阵主对角线上的元素,输出一个N行1列的矩阵,N为主对角线元素的个数 Matrix MinorDiagonal();// 求矩阵的副对角线上的元素,输出一个N行1列的矩阵,N为副对角线上元素的个数 Matrix Row(int n);// 返回矩阵的第n行上的元

5、素,组出一个1行N列的矩阵输出,N为第n行上元素的个数 Matrix Column(int n);// 返回矩阵的第n列上的元素,组出一个N行1列的矩阵输出,N为第n列上元素的个数 void Transpose(); // 将矩阵转置 unsigned char& At(int row, int col); //获取第row行第col列的矩阵元素的值 void Set(int row, int col, double value); //设置第row行第col列矩阵元素的值为value void SetAll(double value); //

6、设置矩阵所有元素为同一值value void Reshape(int h, int w); //在矩阵元素总数不变的情况下,将矩阵行列变为参数给定的大小 bool IsEmpty();// 判断矩阵是否为空矩阵 bool IsSquare();// 判断矩阵是否为方阵 void CopyTo(Matrix &m); // 将矩阵复制给m void Mul(double s); // 矩阵的每个元素都乘以参数 void Cat(Matrix &m, int code); // 将矩阵m与当前矩阵进行拼接,code代表拼接的方式:

7、将m拼接到当前矩阵的上、下、左、右,具体例子见本大纲后面的说明 friend Matrix Add(const Matrix &m1, const Matrix &m2); // 友元函数,将矩阵m1和m2相加,结果矩阵作为函数的返回值 friend Matrix Sub(const Matrix &m1, const Matrix &m2); // 友元函数,将矩阵m1和m2相减,结果矩阵作为函数的返回值 friend void Swap(Matrix &a, Matrix &b); // 友元函数,交换两个矩阵 protected: int height;

8、 int width; double **data; }; #endif Image.h #ifndef Image_H #define Image_H #include "Matrix.h" class Image : public Matrix { public: Image(); //构造函数,创建行列都为零的Image对象 Image(int h, int w); //构造函数重载,创建h行,w列的Image对象 Image(int h, int w, unsigned char val); //构造函

9、数重载,创建的图像像素值都为val; Image(char* ImageName); //构造函数重载,利用文件名从硬盘加载图像文件成为Image对象; Image(unsigned char m[][100], int n); //构造函数重载,从静态数组创建Image对象; Image(unsigned char **m, int h, int w); //构造函数重载,从动态数组创建Image对象; Image(const Matrix &m); //构造函数重载,由Matrix类对象构造Image类对象 Image(const Image &im);

10、//拷贝构造函数; ~Image(); //析构函数; void Read(char* ImageName); //从硬盘文件中读入图像数据; void Write(char* filename); //将图像数据保存为图像文件; void Show(char* winname); //显示图像; void Flip(int code); //图像的翻转; code为0左右,1 上下; void Resize(int h, int w); //图像的缩放为参数指定的大小 void Cut(int x1

11、int y1,int x2,int y2);//裁剪点(x1,y1)到点(x2,y2)的图像 void Rotate(int degree);//图像旋转的函数(旋转角度为任意角度) double Mean();//返回图像的均值 double Variance();//求图像的方差 }; #endif Main.cpp #include #include "highgui.h" #include "Image.h" int main(int argc, char* argv[]) { Matrix m(16000

12、0, 1); for (int i = 0; i < 160000; i++) { m.At(i, 0) = i%256; // m.Set(i,0,i%256); } m.Reshape(400, 400); Image img(m); img.Show("Matrix"); Matrix d = m.Diagonal(); Image *p = new Image(d); p->Show("pImage"); p->Reshape(20,20);

13、 p->Show("pImageReshaped"); delete p; p = NULL; Image im("Fruits.jpg"); im.Resize(200, 200); im.Show("Resized Image"); im.Rotate(40); im.Show("Rotated Image"); Image img1("Fruits.jpg"); img1.Show("Image2"); Image img2("Word.jpg"); img2.Show("Image1")

14、 //两图片相加 Image img_add(Add(img1, img2)) ; img_add.Show("Add"); //两图片相减 Image img_sub(Sub(img1, img2)); img_sub.Show("Sub"); //图片的转置 Image img3("lena.jpg"); img3.Transpose(); img3.Show("Transpose"); //在右边拼接图片; Image img4("Airplane.jpg"); Image img5("Ba

15、boon.jpg"); img4.Cat(img5,1); img4.Show("CATRight"); //在下面拼接图片 Image img6("Airplane.jpg"); Image img7("Baboon.jpg"); img6.Cat(img7,2); img6.Show("CATDown"); return 0; } 说明 1.Reshape函数,顾名思义,将矩阵的形状进行改变。前提是变换前后矩阵元素的个数不能改变,否则应输出错误信息。该变换以行优先的规则将矩阵的元素重新排

16、列。比如有如下3*2的矩阵: 123456 如果对该矩阵进行Reshape(2,3)操作,结果如下: 123456 2.Cat函数将参数m矩阵与调用该函数的矩阵对象进行拼接。比如有矩阵如下: 1234 参数m矩阵为: 5678 假设code=1代表拼接到右边,则结果为: 12345678 假设code=2代表拼接到下面,则结果为: 12345678 3.矩阵相加和相减的友元函数,注意处理结果的范围。因为所设计的矩阵的数据存储类型是double,而一般的图像文件能表达的范围是整数0~255,因此,相加或者相减的结果如果超过了这个范围,那么如果要把结果写入图像文件,则要

17、做相应的处理。可以参考如下两种办法: a)如果相加的结果>255,那么就取255,如果相减的结果<0,则取0。这种方法叫做饱和处理,来自相机拍照时的饱和现象。 b)另外一种处理办法是把数据“规整”到0~255之间。把矩阵所有元素中的最小值设为0,最大值设为255,其他元素线性插入:255*(x - min) / (max - min) 结果示例 产生的矩阵: 上面矩阵的对角线元素组成的矩阵(向量): 上面N*1矩阵经过Reshape变形后的矩阵: Image1: Image2: Image1 + Image2: Image1–Image2: Transpose: 左右拼接: 上下拼接:

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服