本科实验报告.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 6 本科实验报告 课程名称: 计算机动画 姓 名: 学 院: 计算机学院 系: 专 业: 学 号: 指导教师: 2011年 1月 18日 课程名称: 计算机动画 实验类型: 设计实验 实验项目名称: 图像风格化 学生姓名: 专业: 学号: 同组学生姓名: 指导老师: 实验地点: 实验日期: 2011 年 1 月 18 日 一、实验目的 1)图像风格化处理。 2)通过上述实验内容,了解动画动态控制的基本原理和方法,提高学生的动画编程能力。 二、实验要求 输入数据 输入数据用来描述物体的起始形状和终止形状,由若干点组成,起始形状和终止形状的点数一一对应,数据类型为int。 插值变量 插值变量变化范围是[0,1], 插值变量等于0时对应于初始形状,插值变量等于0时对应于终止形状;数据类型为float。 图像风格化处理 在输入图像上设置网格, 在网格结点上生成长度, 宽度变化的笔刷, 利用网格节点所在图像位置上的颜色加上随机扰动, 把输入图像绘制成具有某种艺术风格的图像。 三、主要仪器设备 Visual Studio2008,基于OPenCV开发环境 四、操作方法与实验步骤 【步骤一】阅读实验指导文档,理解领会样条插值算法 【步骤二】在Visual Studio 2008平台上建立Windows控制台工程 【步骤三】配置OPenCV环境。 【步骤四】在stylized.h下定义一个矩形笔刷类Brush,定义笔刷属性。实现代码如下: class Brush { public: int brush_length; //定义笔刷长度 int brush_width; //定义笔刷宽度 double theta; //定义角度 CvScalar color; //定义笔刷颜色,类型为OPenCV的CvScalar类 }; 【步骤五】在stylized.cpp下实现图像风格化,基本思路为,读入一张800*600的图片flower.jpg以及一张空白的图片800*600图片blank.jpg将会被作为绘制风格化图片的图片,根据实际情况设置笔刷的长度和宽度。取得每个像素的颜色值,然后对角度做随机扰动,然后取得笔刷的起始点和终点用cvRectangle(img_dst, pt1, pt2, brush.color, brush.brush_width, 4, 0)以四连通的方式实现笔刷的绘制。实现代码如下 int main(int argc, char* argv[]) { //读入图片文件 IplImage* img_src = 0; if ( argc == 2) { img_src = cvLoadImage(argv[1], -1); } if ( img_src == 0) { img_src = cvLoadImage(DEFAULT_IMAGE_SRC, 1); } IplImage* img_dst = 0; img_dst = cvLoadImage(DEFAULT_IMAGE_DST, 1); if (img_src == 0 || img_dst == 0) { printf(Cant open Image File\n); return -1; } //风格化 CvPoint pt1, pt2; //定义网格点对象,分别存储笔刷的起止点 CvSize img_size; img_size.width = int(cvGetSize(img_src).width); img_size.height = int(cvGetSize(img_src).height); printf(Processing...\n); Brush brush; //定义笔刷对象 brush.brush_length = BRUSH_LENGTH; //设置笔刷长宽 brush.brush_width = B

文档评论(0)

150****0990 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档