opencv3 学习四 - 图像减色
程序如下
#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;
效果见图。

opencv3 学习四 - 图像减色的更多相关文章
- opencv3 学习三 - 图像输入输出显示等
程序如下 #include "opencv2/opencv.hpp" using namespace cv; int main() { Mat file1 = imread(&qu ...
- TweenMax动画库学习(四)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Java基于opencv实现图像数字识别(四)—图像降噪
Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...
- SVG 学习<四> 基础API
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- Android JNI学习(四)——JNI的常用方法的中文API
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- 深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全
深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全 原文地址:Image Completion with Deep Learning in TensorFlow by Bra ...
- OpenCV3学习笔记
http://blog.csdn.net/u010429424/article/details/73691001 http://blog.csdn.net/zhaoxfxy/article/detai ...
- SCARA——OpenGL入门学习四(颜色)
OpenGL入门学习[四] 本次学习的是颜色的选择.终于要走出黑白的世界了~~ OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数 ...
- ZigBee学习四 无线+UART通信
ZigBee学习四 无线+UART通信 1) 协调器编程 修改coordinator.c文件 byte GenericApp_TransID; // This is the unique messag ...
随机推荐
- Windows ->> FIX: “The security database on the server does not have a computer account for this workstation trust relationship”
前几天在做AlwaysOn实验时遇到搭建活动目录域时某台已经加入AD的机器无法以域管理员账户登录的情况. 报错信息是:The security database on the server does ...
- SQL Server ->> Database Promgramming Object Security Control(数据库编程对象安全控制)
对于SQL Server内编程对象的安全控制是今天我在思考的问题.在MSDN上找到了几篇有用的文章. 首先微软推荐了三种做法: 1)第一种做法是在SQL Server中对一个应用程序对应创建应用程序角 ...
- leetcode-Restore IP Addresses-ZZ
http://www.cnblogs.com/remlostime/archive/2012/11/14/2770072.html class Solution { private: vector&l ...
- mongodb 3.4分片复制集配置
1:启动三个实例 mongod -f /home/mongodb/db27017/mongodb27017.conf mongod -f /home/mongodb/db27018/mongodb27 ...
- Web API 2 入门——使用ASP.NET Web API和Angular.js构建单页应用程序(SPA)(谷歌翻译)
在这篇文章中 概观 演习 概要 由网络营 下载网络营训练包 在传统的Web应用程序中,客户机(浏览器)通过请求页面启动与服务器的通信.然后,服务器处理请求,并将页面的HTML发送给客户端.在与页面的后 ...
- 使用Jmeter进行接口测试和压力测试的配置和使用
1. Jmeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. JMeter 可 ...
- SAP S/4HANA生产订单创建时使用的工厂数据是从什么地方带出来的
大家如果使用我github上的这段代码创建S/4HANA的生产订单时,一定会发现,我在代码里并没有硬编码来指定生产订单的ID,然而运行时会发现我在系统里配置的这个2800被自动使用了,这是怎么做到的呢 ...
- SAP C/4HANA与人工智能和增强现实(AR)技术结合的又一个创新案例
今天这篇迟到的文章,来自我的同事Aviva. 去年SAP C/4HANA发布之后,SAP的从业者们可能或多或少都读过一些来自SAP官方渠道,比如微信公众号"SAP天天事"发布的一些 ...
- maven添加oracle依赖失败
由于Oracle授权问题,Maven3不提供oracle JDBC driver 可以到maven中央仓库去下载依赖,网址:http://repo.spring.io/plugins-release/ ...
- Spring Framework5.0 学习(4)—— Bean的命名id和name区别
Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: & ...