/
// 程序名称:将图片转换为马赛克效果
// 编译环境:VS2013,EasyX 20180727(beta)
// 整    理:鼠瓜
// 最后修改:2018-12-9
//算法说明:求出每个小方块内所有像素的颜色平均值,然后用来设置为该小方块的颜色。依次处理每个小方块,即可实现马赛克效果
#include <graphics.h>
#include <conio.h>// 将图片转换为马赛克效果
// 参数:
//      pimg: 待处理的 IMAGE 对象指针
//      tilesize: 马赛克的尺寸
//      startx: 马赛克的平铺起始位置 x 坐标
//      starty: 马赛克的平铺起始位置 y 坐标
void Mosaic(IMAGE *pimg, int tilesize, int startx, int starty)
{int    width = pimg->getwidth();       // 图像的宽int  height = pimg->getheight(); // 图像的高int  redsum;         // 红色值的和int greensum;       // 绿色值的和int bluesum;        // 蓝色值的和int count;          // 每个小方块内的像素数量int   color;          // 每个像素的颜色int x, y, tx, ty; // 循环变量// 获取指向显存的指针DWORD* pMem = GetImageBuffer(pimg);// 求出左上角第一个方块的坐标startx = (startx % tilesize == 0 ? 0 : startx % tilesize - tilesize);starty = (starty % tilesize == 0 ? 0 : starty % tilesize - tilesize);// 处理每一个小方块for (y = starty; y < height; y += tilesize)for (x = startx; x < width; x += tilesize){// 清空累加值redsum = greensum = bluesum = count = 0;// 求小方块的红、绿、蓝颜色值的和for (ty = min(y + tilesize, height) - 1; ty >= max(y, 0); ty--)for (tx = min(x + tilesize, width) - 1; tx >= max(x, 0); tx--){color = pMem[ty * width + tx];redsum += GetRValue(color);greensum += GetGValue(color);bluesum += GetBValue(color);count++;}// 求红、绿、蓝颜色的平均值redsum /= count;greensum /= count;bluesum /= count;// 设置小方块内的每个像素为平均颜色值color = RGB(redsum, greensum, bluesum);for (ty = min(y + tilesize, height) - 1; ty >= max(y, 0); ty--)for (tx = min(x + tilesize, width) - 1; tx >= max(x, 0); tx--)pMem[ty * width + tx] = color;}
}// 主函数
void main()
{// 初始化绘图环境initgraph(640, 480);// 获取图像IMAGE img;loadimage(&img, _T("..\\test.jpg"));// 显示原始图像putimage(0, 0, &img);// 任意键执行_getch();// 将图片转换为马赛克效果Mosaic(&img, 10, 0, 0);// 显示处理后的图像putimage(0, 0, &img);// 任意键关闭绘图环境_getch();closegraph();
}

图片转换为马赛克效果相关推荐

  1. C++将图片转换为马赛克效果

    C++将图片转换为马赛克效果 1. 算法原理 求出每个小方块内所有像素的颜色平均值,然后用来设置为该小方块的颜色.依次处理每个小方块,即可实现马赛克效果 原图 2. 整张图片处理成马赛克效果 #inc ...

  2. PHP实现图片马赛克效果

    原理: 对图片中选定区域的每一像素,增加若干宽度及高度,来生成矩型.而每一像素的矩型重叠在一起,就形成了马赛克效果.本例使用GD库的imagecolorat获取像素颜色,使用imagefilledre ...

  3. python图片马赛克_Python实现PS滤镜中马赛克效果示例

    本文实例讲述了Python实现PS滤镜中马赛克效果.分享给大家供大家参考,具体如下: 这里利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考附录说明,Python示例代码如 ...

  4. 计算机视觉:图片的马赛克、毛玻璃效果和图片的融合

    1.马赛克效果 马赛克的基本原理就是,用某一个区域的某一个像素点替代这个区域所有的像素点,从而导致图片出现模糊的效果,如下: import cv2# 马赛克效果 img = cv2.imread(fi ...

  5. html5 图片局部马赛克,javascript - JS实现马赛克图片效果完整示例

    主要介绍了JS实现马赛克图片效果,结合完整实例形式分析了JavaScript基于HTML5 canvas图形元素绘制实现马赛克效果相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS实现马赛克图片效 ...

  6. 【canvas马赛克效果】根据加载的图片动态生成对应的马赛克图片

    马赛克效果的主要js close-pixelate.js /*!* Close Pixelate v2.0.00 beta* http://desandro.com/resources/close-p ...

  7. OpenCVC++实现图片马赛克效果

    图片马赛克效果 还没开学,在家闲来无事,就自己写了点代码实现了图片马赛克的效果.看了网上很多大佬的文章,决定还是自己动手来试试.配置环境为:OpenCV4.1.2+Visual Studio 马赛克原 ...

  8. html5游戏开发马赛克对比,基于HTML5 Canvas的纯JS图片马赛克效果插件

    这是一款基于HTML5 canvas的图片马赛克js插件.该图片马赛克插件使用简单,可调整马赛克的大小,透明度等属性,适合用于制作一些特殊的图片效果. 基于HTML5 Canvas的纯JS图片马赛克效 ...

  9. OpenCV05:图片色彩反转及马赛克效果

    对于图片的色彩反转问题,可以将其分为两类,一类是灰度图像的颜色反转,另一类是彩色图像的颜色反转. 对于灰度图像的颜色反转,灰度值的取值范围是0-255 ,那么颜色反转就是 255 - 当前灰度值 . ...

最新文章

  1. mybatis简化实现思路
  2. 线性表的动态顺序存储和实现(C语言实现)【线性表】(4)
  3. python类变量与__init__声明变量的区别
  4. 【数据竞赛】五大100%奏效的特征筛选策略
  5. HDU计算机网络系统2021复习提纲
  6. Linux命令学习手册-tr命令 2015-07-26 20:35 9人阅读 评论(0) 收藏...
  7. 开源硬件_如何参与开源硬件协会
  8. oracle恢复关系,SCN与Oracle数据库恢复的关系–补充
  9. 工程linux下创建svn仓库目录结构
  10. 简单的sql循环操作
  11. 计算机中职课程表,计算机专业课程表
  12. 7种常用的数据标注工具
  13. 执行maven打包命令mvn package前maven会默认执行test命令的解决方法
  14. 九、一个IC设计的公司的组织架构和部门职能
  15. 部落战争COC免费获得绿宝石 内购农民攻略
  16. python可以引流吗_你都用 Python 来做什么?
  17. beeline软件_Beeline
  18. 【C语言详解】——文件操作(建议收藏)
  19. php免费利用飞信发送验证码,PHP 使用飞信 API 来发送免费短信
  20. PHPExcel从Excel读取导入数据

热门文章

  1. GeekPwn大赛黑客实现远程入侵Aldebaran NAO机器人
  2. 关于今日头条屏幕适配
  3. MathWorks MATLAB R2021b Mac(商业数学软件)
  4. [FAQ13620]L版本之后AAL功能进一步介绍
  5. 十三五:深圳将打造智慧城市等十张名片
  6. 在全文索引中同义词的使用
  7. PMI-ACP考试报名的注意事项有哪些?
  8. onclick传两参数,需要转义双引号,不然只能传一个数值
  9. Github 上最大的开源算法库,还能学机器学习
  10. gpu算力测试软件,麒麟990性能实测:CPU、GPU以及AI算力