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

1. 算法原理

求出每个小方块内所有像素的颜色平均值,然后用来设置为该小方块的颜色。依次处理每个小方块,即可实现马赛克效果

原图

2. 整张图片处理成马赛克效果

#include "stdafx.h"
#include <graphics.h>
#define N 8int main()
{//Step1: 加载图片IMAGE image;loadimage(&image, L"C:\\test\\image.jpg");initgraph(image.getwidth(), image.getheight());       //用图片的大小初始化窗口大小putimage(0, 0, &image);//Step2: 对图片经行处理for (int i = 0; i < image.getheight(); i += N)      //遍历整张图片, 步长为N, 即将整张图片分割成若干张N*N大小的小方格,再对每一个N*N的方格依次处理     for (int j = 0; j < image.getwidth(); j += N){int red = 0, green = 0, blue = 0;for (int x = i; x < i + N; x++)            //遍历该小方格(大小: N*N)for (int y = j; y < j + N; y++){COLORREF color = getpixel(y, x);   //用于获取该点的颜色red += GetRValue(color);           //提取该点颜色的red值green += GetGValue(color);blue += GetBValue(color);}red /= N*N;                               //求平均green /= N*N;blue /= N*N;setfillcolor(RGB(red, green, blue));        //将平均后的颜色设置为当前填充色(只是设置,并没有填充)solidrectangle(j, i, j + N, i + N);         //填充该小方格(开始填充)}//Step3: 保存处理后的图片saveimage(L"C:\\test\\mosaic.jpg");closegraph();return 0;
}

效果

3. 通过鼠标选取区域填充马赛克

#include "stdafx.h"
#include <graphics.h>
#define N 8int main()
{//Step1: 加载图片IMAGE image;loadimage(&image, L"C:\\test\\image.jpg");initgraph(image.getwidth(), image.getheight());    //用图片的大小初始化窗口大小putimage(0, 0, &image);//Step2: 监听鼠标消息MOUSEMSG m;       while (true){// 获取一条鼠标消息m = GetMouseMsg();switch (m.uMsg){case WM_MOUSEMOVE:if (m.mkLButton){//Step3: 对图片区域处理int red = 0, green = 0, blue = 0;for (int x = m.y; x < m.y + N; x++)for (int y = m.x; y < m.x + N; y++){COLORREF color = getpixel(y, x);red += GetRValue(color);green += GetGValue(color);blue += GetBValue(color);}red /= N * N;green /= N * N;blue /= N * N;setfillcolor(RGB(red, green, blue));solidrectangle(m.x, m.y, m.x + N, m.y + N);}break;case WM_LBUTTONDOWN:break;case WM_RBUTTONUP://Step4: 保存处理后的图片saveimage(L"C:\\test\\mosaic.jpg");closegraph();return 0; // 按鼠标右键退出程序}}return 0;
}

效果

4. 图形库下载链接

图形库

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

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

    / // 程序名称:将图片转换为马赛克效果 // 编译环境:VS2013,EasyX 20180727(beta) // 整 理:鼠瓜 // 最后修改:2018-12-9 //算法说明:求出每个小方块 ...

  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. python fpga_如何实现用Python开发FPGA?
  2. 扩容是元素还是数组_Java中对数组的操作
  3. 西安下雪了,做了一个室内温度计
  4. eff java_Perl 6,EFF的阅读和观看列表以及更多开源新闻
  5. [HNOI2006]最短母串问题——AC自动机+状压+bfs环形处理
  6. ATmega8仿真——键盘扫描的学习
  7. Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的联系
  8. Cocostudio生成的UI,触摸屏蔽问题
  9. 2010年通信工程概预算培训讲义
  10. 安卓psp模拟器哪个好_手机psp模拟器哪个好_安卓PSP模拟器中文官方版下载_66游戏网...
  11. C:\fakepath 问题
  12. python绘制动态数字时钟_用 Python 画动态时钟
  13. vml时序表_VML代码分析是怎么分析的
  14. antd vue表单验证_解决antd 表单设置默认值initialValue后验证失效的问题
  15. vue pc端调用摄像头进行拍照并实现裁剪上传
  16. 如何删除WhatsApp消息
  17. js 获取设备或浏览器唯一标识的方式
  18. NYOJ--1237最大岛屿
  19. 3D可视化大屏是如何实现的?
  20. python爬虫实习生面试经验分享【卖座网】

热门文章

  1. 超全!2020年互联网大厂薪资和职级一览
  2. 超级漂亮的几款清新、常用的网页CSS布局配色实例
  3. 华为matebookxpro调不了亮度解决办法
  4. Go语言用GoPacket抓包分析
  5. 好用的三维绘图软件CREO的样条曲线绘制
  6. 一个程序员6年的浏览器收藏夹
  7. 路由器和通用计算机的共同点,智能路由器和普通路由器之间的区别有哪些
  8. 南怀瑾谈睡眠养生:如何才能少睡不困?
  9. 计算机毕业设计ssm基于WEB的儿童运动馆业务信息系统
  10. 创成汇创业赛事平台|效果怎么样?