您的位置:首页 > 运维架构

Opencv— — mix channels

2016-02-24 11:23 441 查看
// 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


// The program will mix the color channels.

#include "PS_Algorithm.h"
int main()
{
string  Image_name("4.jpg");
Mat Image=imread(Image_name.c_str());
Mat Image_test(Image.size(),CV_32FC3);
Image.convertTo(Image_test, CV_32FC3);

Mat New_img(Image_test.size(), CV_32FC3);
Mat r, g, b;
Mat bgr[]={b,g,r};

split(Image_test, bgr);

b=bgr[0];
g=bgr[1];
r=bgr[2];

float blueGreen, redBlue, greenRed;
blueGreen=0.5;
redBlue=0.5;
greenRed=0.5;

float intoR, intoG, intoB;
intoR=0.75;
intoG=0.25,
intoB=0.75;

Mat N_R(r.size(), CV_32FC1);
Mat N_G(r.size(), CV_32FC1);
Mat N_B(r.size(), CV_32FC1);

Mat new_bgr[]={N_B, N_G, N_R};

N_R=(intoR * (blueGreen*g+(1-blueGreen)*b) + (1-intoR)*r);
N_G=(intoG * (redBlue*b+(1-redBlue)*r) + (1-intoG)*g);
N_B=(intoB * (greenRed*r+(1-greenRed)*g) + (1-intoB)*b);

merge(new_bgr, 3, New_img);

New_img=New_img/255.0;

Show_Image(New_img, "New_img");

cout<<"All is well."<<endl;
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/46790129
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: