Opencv— — Color Gradient


// define head function
#ifndef PS_ALGORITHM_H_INCLUDED
#define PS_ALGORITHM_H_INCLUDED

#include <iostream>
#include <string>
#include "cv.h"
#include "highgui.h"
#include "cxmat.hpp"
#include "cxcore.hpp"
#include "math.h"

using namespace std;
using namespace cv;

void Show_Image(Mat&, const string &);

#endif // PS_ALGORITHM_H_INCLUDED


#include "PS_Algorithm.h"
#include <time.h>

using namespace std;
using namespace cv;

#define pi 3.1415926

int main()
{
    string Img_name("4.jpg");
    Mat Img;
    Img=imread(Img_name);

    Mat Img_out(Img.size(), CV_8UC3);

    int width=Img.cols;
    int height=Img.rows;

    float rNW=1.0;     float gNW=0.0;    float bNW=0.0;
    float rNE=1.0;     float gNE=1.0;    float bNE=0.0;
    float rSW=0.0;     float gSW=0;      float bSW=1.0;
    float rSE=0.0;     float gSE=1.0;    float bSE=0.0;

    float fx, fy;
    float p, q, r, g, b;

    for (int y=0; y<height; y++)
    {
        for (int x=0; x<width; x++)
        {
            fx=(float)(x)/width;
            fy=(float)(y)/height;

            p = rNW + (rNE - rNW) * fx;
            q = rSW + (rSE - rSW) * fx;
            r = ( p + (q - p) * fy );
            r = min(max(r, 0.0f), 1.0f);

            p = gNW + (gNE - gNW) * fx;
            q = gSW + (gSE - gSW) * fx;
            g = ( p + (q - p) * fy );
            g = min(max(g, 0.0f) ,1.0f);

            p = bNW + (bNE - bNW) * fx;
            q = bSW + (bSE - bSW) * fx;
            b = ( p + (q - p) * fy );
            b = min(max(b, 0.0f), 1.0f);

            Img_out.at<Vec3b>(y, x)[0]=b*255.0;
            Img_out.at<Vec3b>(y, x)[1]=g*255.0;
            Img_out.at<Vec3b>(y, x)[2]=r*255.0;

        }
    }

    Show_Image(Img_out, "out");
    cout<<"All is well"<<endl;

   // imwrite("Out.jpg", Img_out);

    waitKey();
}


// define the show image
#include "PS_Algorithm.h"
#include <iostream>
#include <string>

using namespace std;
using namespace cv;

void Show_Image(Mat& Image, const string& str)
{
    namedWindow(str.c_str(),CV_WINDOW_AUTOSIZE);
    imshow(str.c_str(), Image);

}

图像效果可以参考:

http://blog.csdn.net/matrix_space/article/details/46906849

转载于:https://www.cnblogs.com/mtcnn/p/9412517.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值