CImage类进行图像处理1(基础篇)
1.实现红色部分变蓝
#include<iostream>
#include<atlimage.h>
using namespace std;
void swapRGWhenGedMax(COLORREF &c)
{
int r = GetRValue(c);
int g = GetGValue(c);
int b = GetBValue(c);
if (r > g && r > b)
{
swap(r, b);
}
c = RGB(r, g, b);
}
int main()
{
const char *srcFilePath = "1a.jpg";
const char *destFilePath = "1b.jpg";
CImage srclmage;
srclmage.Load(srcFilePath);
int width = srclmage.GetWidth();
int height = srclmage.GetHeight();
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
COLORREF c = srclmage.GetPixel(x, y);
swapRGWhenGedMax(c);
srclmage.SetPixel(x, y, c);
}
}
srclmage.Save(destFilePath);
return 0;
}
2.实现图片反色
#include<iostream>
#include<atlimage.h>
using namespace std;
void swapRGWhenGedMax(COLORREF &c)
{
int r = GetRValue(c);
int g = GetGValue(c);
int b = GetBValue(c);
c = RGB(255 - r, 255 - g, 255 - b);
}
int main()
{
const char *srcFilePath = "2a.jpg";
const char *destFilePath = "2b.jpg";
CImage srclmage;
srclmage.Load(srcFilePath);
int width = srclmage.GetWidth();
int height = srclmage.GetHeight();
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
COLORREF c = srclmage.GetPixel(x, y);
swapRGWhenGedMax(c);
srclmage.SetPixel(x, y, c);
}
}
srclmage.Save(destFilePath);
return 0;
}
3.提取
#include<iostream>
#include<atlimage.h>
using namespace std;
void swapRGWhenGedMax(COLORREF &c)
{
int r = GetRValue(c);
int g = GetGValue(c);
int b = GetBValue(c);
if (70 < r && r< 99 && b < 30) //防止后期洞的出现,将r调到大于99
{
r = 103;
g = 29;
b = 4;
}
if (r < 99)
{
r = 255;
g = 255;
b = 255;
}
c = RGB(r, g, b);
}
int main()
{
const char *srcFilePath = "3a.jpg";
const char *destFilePath = "3b3.jpg";
CImage srclmage;
srclmage.Load(srcFilePath);
int width = srclmage.GetWidth();
int height = srclmage.GetHeight();
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
COLORREF c = srclmage.GetPixel(x, y);
swapRGWhenGedMax(c);
srclmage.SetPixel(x, y, c);
}
}
srclmage.Save(destFilePath);
return 0;
}
CImage类进行图像处理1(基础篇)相关推荐
- (四)nodejs循序渐进-函数,类和对象(基础篇)
上一篇文章讲到了基本数据类型和运算符,相信大家都能做简单的运算,本篇文章将讲述函数,类,对象. 函数 在nodejs中,一个函数可以作为另一个函数的参数.我们可以先定义一个函数,然后传递,也可以在传递 ...
- CImage类 from http://www.cnblogs.com/afarmer/archive/2012/03/31/2427273.html
CImage类 Visual C++的CBitmap类的功能是比较弱的,它只能显示出在资源中的图标.位图.光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件(BMP. ...
- [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python从零到壹] 四十.图像处理基础篇之图像量化处理
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python从零到壹] 三十九.图像处理基础篇之图像几何变换(镜像仿射透视)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python从零到壹] 三十六.图像处理基础篇之图像算术与逻辑运算详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- class括号里的object_Python入门 类class 基础篇
记住一句话:类是模板,而实例则是根据类创建的对象. 我初学时对类的理解是从类的字面上,可以片面的认为它是一个种类,它是相似特征的抽像,也就是相似的东西,可以把相似特征的事务抽象成一个类.(事务可以是具 ...
最新文章
- Openresty使用
- firefox和chrome中 JQuery的ajax组件执行差异
- nginx系列之三:日志配置
- HDU5322 - cdq分治FFT加速dp
- gcp devops_将GCP AI平台笔记本用作可重现的数据科学环境
- 二十五、MongoDB 索引 和 explain 的使用
- 支付宝系统架构(内部架构图)
- php webqq登陆,Smart QQ——腾讯新一代网页版 WebQQ,更简洁纯粹的实用在线聊天工具!...
- 飞凌小课堂-OK3399-C linux双千兆网口方案-RTL8153
- 迅雷如何添加html文件夹,迅雷7上我的收藏怎么找
- 论文排版LaTeX学习笔记
- Java物流成本计算器
- 数据挖掘(数据分析)从业指南
- time datetime 总结
- C++如何获取虚函数表(vtbl)的内容及虚成员函数指针存放原理
- PFC的使用与探索(一)
- 2004-10-30 周六
- 传奇单机架设超详细图文教程
- UE4 第三人称人物 目标偏移(Aim offset)学习笔记
- 计算机一级office考试大纲,计算机一级考试MSoffice考试大纲