程序如下

#include "opencv2/opencv.hpp"
using namespace cv; int main()
{
// 灰度图
Mat original = imread("girl.jpg",CV_LOAD_IMAGE_GRAYSCALE);
Mat modified = imread("girl.jpg",CV_LOAD_IMAGE_GRAYSCALE); // 彩色图
//Mat original = imread("girl.jpg",CV_LOAD_IMAGE_COLOR);
//Mat modified = imread("girl.jpg",CV_LOAD_IMAGE_COLOR); for (int r = 0; r < modified.rows; r++)
{
for (int c = 0; c < modified.cols; c++)
{
// 灰度图
modified.at<uchar>(r, c) = modified.at<uchar>(r, c) * 0.6; // 彩色图
//modified.at<Vec3b>(r, c)[0] = modified.at<Vec3b>(r, c)[0] * 0;
//modified.at<Vec3b>(r, c)[1] = modified.at<Vec3b>(r, c)[1] * 0;
//modified.at<Vec3b>(r, c)[2] = modified.at<Vec3b>(r, c)[2] * 0;
}
} imshow("Original", original);
imshow("Modified", modified); waitKey();
return 0;
}

运行结果如下:

图像减色

通过图像行列,遍历图像的每个像素,通过Mat的成员函数at<>,把每个通道的像素值减少, 但这种方法较慢。

灰度图

灰度图只有一个通道,效果见下图。代码如下:

modified.at<uchar>(r, c) = modified.at<uchar>(r, c) * 0.6;

彩色图

彩色图有三个通道,分别对每个通道减色, 每次只运行下面一条语句, 读取时采用 CV_LOAD_IMAGE_COLOR。程序如下:

modified.at<Vec3b>(r, c)[0] = modified.at<Vec3b>(r, c)[0] * 0;

modified.at<Vec3b>(r, c)[1] = modified.at<Vec3b>(r, c)[1] * 0;

modified.at<Vec3b>(r, c)[2] = modified.at<Vec3b>(r, c)[2] * 0;

效果见图。

最新文章

  1. Hyper-v 安装CentOS 7 (其他虚拟机一样参考)
  2. 只需2分钟,简单构建velocity web项目
  3. GetStoredProcCommand和GetSqlStringCommand的区别
  4. [No00004A]为什么你看了很多书,却依然没有洞见
  5. [3].jekyll的基础
  6. 晒自己做的一个管理系统(清新风格)EasyUI
  7. 将存储在本地的大量分散的小文件,合并并保存在hdfs文件系统中
  8. hihoCoder#1014 Trie树 (前缀树)
  9. awk处理之案例三:awk去掉不需要的文本行
  10. eval(&quot;(&quot;+json对象+&quot;)&quot;)
  11. linq读书笔记2-查询内存中的对象
  12. Aix字符集
  13. 4-jQuery - AJAX post()
  14. Wincc flexable的按钮组态
  15. 企业级镜像仓库harbor搭建
  16. Datediff的使用(统计本日,昨日,本周,本月)
  17. 转://Window下安装Oracle ASM单实例数据库
  18. (第一篇) 一步一步带你了解linq to Object
  19. bootstrap-treeview的 简单使用
  20. 使用wmic.exe绕过应用程序白名单(多种方法)

热门文章

  1. UVaOJ 694 - The Collatz Sequence
  2. SVNKit学习——使用低级别的API(ISVNEditor接口)直接操作Repository的目录和文件(五)
  3. vue + element-ui 制作tab切换(切换vue组件,踩坑总结)
  4. DOS下常用命令
  5. January 18 2017 Week 3 Wednesday
  6. shared_ptr 的使用及注意事项
  7. AngularJs学习笔记--E2E Testing
  8. IntelliJ IDEA中 查看某个类中的所有方法
  9. 20、Springboot 与数据访问(JDBC/自动配置)
  10. 13、SpringBoot-CRUD员工修改操作/删除