图片转换为马赛克效果
/
// 程序名称:将图片转换为马赛克效果
// 编译环境: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();
}
图片转换为马赛克效果相关推荐
- C++将图片转换为马赛克效果
C++将图片转换为马赛克效果 1. 算法原理 求出每个小方块内所有像素的颜色平均值,然后用来设置为该小方块的颜色.依次处理每个小方块,即可实现马赛克效果 原图 2. 整张图片处理成马赛克效果 #inc ...
- PHP实现图片马赛克效果
原理: 对图片中选定区域的每一像素,增加若干宽度及高度,来生成矩型.而每一像素的矩型重叠在一起,就形成了马赛克效果.本例使用GD库的imagecolorat获取像素颜色,使用imagefilledre ...
- python图片马赛克_Python实现PS滤镜中马赛克效果示例
本文实例讲述了Python实现PS滤镜中马赛克效果.分享给大家供大家参考,具体如下: 这里利用 Python 实现PS 滤镜中的马赛克效果,具体的算法原理和效果可以参考附录说明,Python示例代码如 ...
- 计算机视觉:图片的马赛克、毛玻璃效果和图片的融合
1.马赛克效果 马赛克的基本原理就是,用某一个区域的某一个像素点替代这个区域所有的像素点,从而导致图片出现模糊的效果,如下: import cv2# 马赛克效果 img = cv2.imread(fi ...
- html5 图片局部马赛克,javascript - JS实现马赛克图片效果完整示例
主要介绍了JS实现马赛克图片效果,结合完整实例形式分析了JavaScript基于HTML5 canvas图形元素绘制实现马赛克效果相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS实现马赛克图片效 ...
- 【canvas马赛克效果】根据加载的图片动态生成对应的马赛克图片
马赛克效果的主要js close-pixelate.js /*!* Close Pixelate v2.0.00 beta* http://desandro.com/resources/close-p ...
- OpenCVC++实现图片马赛克效果
图片马赛克效果 还没开学,在家闲来无事,就自己写了点代码实现了图片马赛克的效果.看了网上很多大佬的文章,决定还是自己动手来试试.配置环境为:OpenCV4.1.2+Visual Studio 马赛克原 ...
- html5游戏开发马赛克对比,基于HTML5 Canvas的纯JS图片马赛克效果插件
这是一款基于HTML5 canvas的图片马赛克js插件.该图片马赛克插件使用简单,可调整马赛克的大小,透明度等属性,适合用于制作一些特殊的图片效果. 基于HTML5 Canvas的纯JS图片马赛克效 ...
- OpenCV05:图片色彩反转及马赛克效果
对于图片的色彩反转问题,可以将其分为两类,一类是灰度图像的颜色反转,另一类是彩色图像的颜色反转. 对于灰度图像的颜色反转,灰度值的取值范围是0-255 ,那么颜色反转就是 255 - 当前灰度值 . ...
最新文章
- mybatis简化实现思路
- 线性表的动态顺序存储和实现(C语言实现)【线性表】(4)
- python类变量与__init__声明变量的区别
- 【数据竞赛】五大100%奏效的特征筛选策略
- HDU计算机网络系统2021复习提纲
- Linux命令学习手册-tr命令 2015-07-26 20:35 9人阅读 评论(0) 收藏...
- 开源硬件_如何参与开源硬件协会
- oracle恢复关系,SCN与Oracle数据库恢复的关系–补充
- 工程linux下创建svn仓库目录结构
- 简单的sql循环操作
- 计算机中职课程表,计算机专业课程表
- 7种常用的数据标注工具
- 执行maven打包命令mvn package前maven会默认执行test命令的解决方法
- 九、一个IC设计的公司的组织架构和部门职能
- 部落战争COC免费获得绿宝石 内购农民攻略
- python可以引流吗_你都用 Python 来做什么?
- beeline软件_Beeline
- 【C语言详解】——文件操作(建议收藏)
- php免费利用飞信发送验证码,PHP 使用飞信 API 来发送免费短信
- PHPExcel从Excel读取导入数据