#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std; // 计时函数
void PrintMs(const char *text = "")
{
static long long last = ;
long long cur = getTickCount();
if (last == )
{
last = cur;
return;
}
long long ms = ;
ms = ((double)(cur - last) / getTickFrequency()) * ;
if (*text != )
{
printf("%s = %dms\n", text,ms);
}
last = getTickCount();
} // RGB图像转Gray图像
void RGBToGray(Mat &src, Mat &des)
{
// GRay = (R*30 + G*59 + B*11 +50)/100
des.create(src.rows,src.cols,CV_8UC1);
for (int r = ; r < src.rows; r++)
{
for (int c = ; c < src.cols; c++)
{
Vec3b &m = src.at<Vec3b>(r, c);
int gray = (m[] * + m[] * + m[] * + ) / ;
des.at<uchar>(r, c) = gray;
}
}
} /////////////改变图像的对比度和亮度/////////////////////////////////////
///@para a float 对比度 1.0~3.0
///@para b int 亮度 0~100
void ChangeGain(Mat &src, Mat &des, float a, int b)
{
//g(r,c) = a*f(r,c) + b
des.create(src.rows, src.cols, src.type());
for (int r = ; r < src.rows; r++)
{
for (int c = ; c < src.cols; c++)
{
for (int i = ; i < ; i++)
{
des.at<Vec3b>(r, c)[i] = saturate_cast<uchar>(a * src.at<Vec3b>(r, c)[i] + b);
}
}
}
} // 改变图像的尺寸
void xresize(Mat &src, Mat &des, Size size)
{
des.create(size, src.type());
//映射的原图坐标
int sx, sy = ;
float fx = (float)src.cols / des.cols;
float fy = (float)src.rows / des.rows;
for (int x = ; x < des.cols; x++)
{
sx = fx * x + 0.5;
for (int y = ; y <des.rows; y++)
{
sy = fy * y + 0.5;
des.at<Vec3b>(y, x) = src.at<Vec3b>(sy, sx);
}
} } int main(int argc, char *argv[])
{
Mat src = imread("1.png");
src.create(, , CV_8UC3);
Mat gray;
PrintMs("");
cvtColor(src, gray, COLOR_BGR2GRAY);
PrintMs("cvtColor1"); cvtColor(src, gray, COLOR_BGR2GRAY);
PrintMs("cvtColor2");
Mat mygray;
RGBToGray(src, mygray);
PrintMs("RGBToGray"); namedWindow("src");
namedWindow("gray");
namedWindow("mygray"); imshow("src", src);
imshow("gray", gray);
imshow("mygray", mygray); waitKey(); return ;
}

OpenCV --- 修改图像的对比度、亮度 、RGB转Gray图像、修改图像的尺寸的更多相关文章

  1. OpenCV学习:改变图像的对比度和亮度

    本实例演示简单地改变图像的对比度和亮度,使用了如下线性变换来实现像素值的遍历操作: The parameters α > 0 and β often called the gain and bi ...

  2. Opencv改变图像亮度和对比度以及优化

    https://blog.csdn.net/u013139259/article/details/52145377 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  3. OpenCV与Python之图像的读入与显示以及利用Numpy的图像转换

    1:读入图像,显示图像与保存图像 代码: import cv2 img=cv2.imread('lena.jpg',cv2.IMREAD_COLOR) cv2.namedWindow('lena',c ...

  4. 【C#/WPF】调节图像的对比度(Contrast)

    关于对比度: 调节对比度直观感受是,高对比度的图像明暗关系更明显,色彩更鲜艳:低对比度的图像表面像是蒙上一层灰,色彩不鲜艳. 需求: 制作一个面板,一个滑动条,拖动滑动条可以修改目标图片的对比度. 资 ...

  5. Python: PS 图像调整--对比度调整

    本文用 Python 实现 PS 里的图像调整–对比度调整.具体的算法原理如下: (1).nRGB = RGB + (RGB - Threshold) * Contrast / 255 公式中,nRG ...

  6. 1.1.0-学习Opencv与MFC混合编程之---全屏截图,保存为BMP图像(并增加快捷键)

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961677 Ø  添加全屏截图菜单项,菜单项的属性如下; Ø  为该菜单项建立类向导. 编辑消息处理函 ...

  7. 手动ubuntu 18.04修改登录锁屏界面效果(含登录背景修改)flat-remix

    前言 在ubuntu 18.04,可以通过修改/etc/alternatives/gdm3.css来进行修改 本来想直接使用flat-remix主题,但是只有这个登录界面没有达到作者演示的效果,所以手 ...

  8. mybatis中修改了数据,控制台显示成功,数据库没有修改

    在mybatis中遇到了修改数据时,控制台显示修改成功,但是去数据库查看并没有修改,这是因为mybatis不时自动提交事务的,所以是不会修改数据库的数据,这是我们加上一句 sqlSession.com ...

  9. 26.使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面

    转自:https://blog.csdn.net/yuxxz/article/details/51318908 使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及 ...

随机推荐

  1. sigint sigterm 有什么区别啊

    SIGHUP     终止进程     终端线路挂断SIGINT     终止进程     中断进程SIGQUIT   建立CORE文件终止进程,并且生成core文件SIGILL   建立CORE文件 ...

  2. 【Java】JavaWeb文件上传和下载

    文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件 ...

  3. php-生成数据库设计文档

    在线以及提供下载数据库设计文档 $dbserver = "192.168.128.190:42578"; $dbusername = "root"; $dbpa ...

  4. hdu-1121(差分法--数学问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1121 参考文章:https://blog.csdn.net/fengzhizi76506/articl ...

  5. Libevent学习之SocketPair实现

    Libevent设计的精化之一在于把Timer事件.Signal事件和IO事件统一集成在一个Reactor中,以统一的方式去处理这三种不同的事件,更确切的说是把Timer事件和Signal事件融合到了 ...

  6. HDU 3177 Crixalis's Equipment (贪心,差值)

    题意:判断 n 件物品是否可以搬进洞里,每件物品有实际体积A和移动时的额外体积 B . 析:第一反应就是贪心,一想是不是按B从大到小,然后一想,不对,比如体积是20,第一个 是A=11, B=19.第 ...

  7. 理解Defer、Panic和Recover

    刚开始的时候理解如何使用Defer和Recover有一点怪异,尤其是使用了try/catch块的时候.有一种模式可以在Go中实现和try/catch语句块一样的效果.不过之前你需要先领会Defer.P ...

  8. ajax如何向后台传递数组,在后台该如何接收的问题(项目积累)

    一.后台如何接收从前台接收的数组: 使用request.getParameterValues(String xxx); <input type="text" name=&qu ...

  9. Python2.7升级至Python3.6

    Python2.7升级至Python3.6 今天在CentOS7.2上将python2.7升级至python3.6时遇到了诸多问题,下面将升级步骤以及解决方法一一列举. 1.安装Python3.6 安 ...

  10. [LeetCode] Binary Tree Maximum Path Sum(最大路径和)

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...