C语言图像处理函数

没有积分,无私奉献,只希望多多支持,哈哈谢谢了

C语言图像处理函数大全,完整版

1.图像平移

图像平移只是改变图像在屏幕上的位置,图像本身并不发生变化。

假设原图像区域左上角坐标为(x0, y0),右下角坐标为(x1, y1),将图像分别沿x和y轴平移dx和dy,则新图像的左上角坐标为(x0 +dx, y0+dy),右下角坐标为(x1+dx, y1+dy)。坐标平移变换公式为: x′ = x + dx

y′ = y + dy

在屏幕上实现图像的移动分为四个步骤:

⑴ 保存原图像到缓冲区。

⑵ 擦除原图像。

⑶ 计算平移后的新坐标。

⑷ 在新的坐标位置重新显示原图像。

其中,擦除原图像的方法与图形变换中擦除原图形的方法一致,在实现中仍采用XOR异或方式画图擦除原图像。对于新坐标值的计算还需要考虑边界情况,不要在图像平移后超出允许的屏幕范围。此外,如果采用C函数getimage()和putimage()来保存和恢复图像,则图像的大小不能超过64K。

2.图像颠倒

图像颠倒是指把定义好的图像区域上下翻转地显示在屏幕上。分析图像颠倒的过程,可发现每行的图像信息都保持不变,而只是改变了行的顺序,将第一行与最后的第n行相互交换,第二行与第n-1行交换……,依此类推,从而实现了图像的颠倒。只需采用按行交换的方式,即可方便地修改缓冲区内容,实现图像的颠倒。基本步骤如下:

(1) 用getimage()保存原图像,并擦除原图像。

(2) 计算图像的高度,即行数height;计算图像宽度width;计算保存一行图像信息 height = bottom - top + 1;

width = right - left + 1;

linebytes = (width + 7) / 8 * 4;

(3)利用行交换缓冲区linebuf在图像内存缓冲区中进行信息交换,即把第一行与最末行交换,第2行与第n-1行交换……,依此类推,直至全部交换完毕。

(4)把交换后的图像缓冲区内容重新显示在屏幕上。

3.图像镜像变换

镜像变换是指将指定区域的图像左右翻转地显示在屏幕。分析镜像变换过程可以发现:每行图像信息的处理方式是相同的,而且行顺序不发生变化,只是每一行的像素信息按从左到右的顺序进行了左右颠倒,从而实现了镜像变换。因此,采用按行逐点变换的方式实现图像的镜像。

首先,对于左上角为(left, top),右下角为(right, bottom)矩形区域图像,给出其中任意点(x0, y0)镜像变换后的新坐标(x′, y′)的坐标变换公式:

x = right - x0 + left

y′ = y0

根据以上公式,对各个像素点计算新坐标后,直接把它显示在屏幕的相应位置上。

如果完全逐点地进行交换,处理一个像素点就要读取一次像素值,从而降低了变换速度。由于像素点是顺序存放在各个bit位上,每读取一个字节就包含了8个像素点的信息,只需设置不同的位屏值bitmask,

c语言中图像处理相关函数,C语言图像处理函数大全相关推荐

  1. 奇怪的方式c语言,C语言中奇怪的C语言特性

    3)Duff's Device http://en.wikipedia.org/wiki/Duff%27s_device 特点是switch与while交错出现.代码类似 4)同名同姓现象 在< ...

  2. 在C语言中以编程的方式获取函数名

    在C语言中以编程的方式获取函数名 仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧. 对象反射库.调试工具及 ...

  3. 关于linuxC语言中创建进程,利用execlp函数执行.c程序问题

    关于linuxC语言中创建进程,利用execlp函数执行.c程序问题 对于一个小白来说,这个系统调用真的太难了,完全摸不着头脑啊,一搜execlp函数,全是执行的命令,什么传参硬是没懂. 不过说到底, ...

  4. c语言 字符串 strncpy,详解c语言中的 strcpy和strncpy字符串函数使用

    详解c语言中的 strcpy和strncpy字符串函数使用 strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,cha ...

  5. c语言写游戏用那些函数,c语言做游戏常用到的一些函数大全2011.doc

    PAGE / NUMPAGES C语言做游戏常用到的一些函数大全 2010-10-10 14:10| (分类:默认分类) 原文:C语言做游戏常用到的一些函数大全 时间延迟函数函数名: delay功 能 ...

  6. c语言中什么随机存取,C语言中对文件的随机存取

    C语言中对文件的随机存取 C语言中要实现对文件的随机存 取,需要用到两个函数fseek().ftell().下面通过 一个反转显示指定文件的程序来介绍这两个函数的用法. r eserve.c: #in ...

  7. c语言中程序偏离,C语言中的指针加减偏移量

    首先看一段程序: #include int main() { int a[5] = {1, 2, 3, 4, 5}; int* p = (int*)(&a + 1); printf(" ...

  8. 在c语言中下面指针,c语言指针的知识点

    在计算机科学中,指针 ***Pointer***是编程语言中的一个对象,利用地址,它的值直接指向***points to***存在电脑存储器中另一个地方的值.下面是小编为大家整理的C语言的指针知识点总 ...

  9. C语言中低位存放,C语言 大端小端存储解析以及判断方法

    当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() { int i = 1; return 0; } 数据在内存中的存放方式 ...

最新文章

  1. sql输出表中重复数据
  2. 获取GridView隐藏列值
  3. BZOJ 3669: [Noi2014]魔法森林( LCT )
  4. Exp2 后门原理与实践 20164309
  5. latex排版基础_排版基础分类
  6. 递归——黑白棋子的移动(洛谷 P1259)
  7. 【重难点】【JUC 04】synchronized 原理、ReentrantLock 原理、synchronized 和 Lock 的对比、CAS 无锁原理
  8. 使用HTML和CSS格式化DBMail
  9. jpa mysql 配置文件_Spring+JPA+MySQL的配置文件
  10. Jenkins 集成Ansible教程
  11. 各大厂面试云集的《520道LeetCode题Java版答案》
  12. Unity通过压缩字体减小包体大小
  13. 贝叶斯决策论(一):贝叶斯决策理论
  14. 中国医大CT-YOUNG 闪讯和深澜并存的验证机制研究
  15. Office Word 2010 2013 插入复选框 方框打勾 对号
  16. UE4 Slate七 Slate本地化, UE4编辑器如何做的本地化
  17. c c++ 实现代理服务器
  18. 人工神经元再进一步,存储记忆已成现实
  19. Spring Cloud Bus 使用说明
  20. javascript实现小米搜索框

热门文章

  1. hdu1005 Number Sequence(寻找循环节)
  2. CentOS6.5安装python2.7.6(慎重升级)
  3. 微软十大软件开发英雄评选
  4. 使用模态窗口编辑数据
  5. 将javascript嵌入项目中
  6. enum枚举类型的范例
  7. 毛毛虫组【Beta】Scrum Meeting 3
  8. linkedhashmap中关于LRU算法的实现
  9. 深入理解Java:SimpleDateFormat安全的时间格式化 ;
  10. 01_Android应用开发环境_01_android发展史及系统架构