直接对v均衡化,简单,十分有效。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src_color = imread("E:/mypic/v1.png"); //person.jpg
imshow("src_color", src_color);
Mat src_hsv;
cvtColor(src_color, src_hsv, COLOR_BGR2HSV_FULL);//全归一化到0~255COLOR_BGR2HSV_FULL
vector<Mat> hsv_channels;
split(src_hsv, hsv_channels);
Mat H = hsv_channels[0];
Mat S = hsv_channels[1];
Mat V = hsv_channels[2];
imshow("H", H);
imshow("S", S);
imshow("V", V);
equalizeHist(V, V); //直接把V处理,进行合成
imshow("V2", V);
vector<cv::Mat> channels_3;
channels_3.push_back(H); //H
channels_3.push_back(S); //S
channels_3.push_back(V); //V
Mat img_merge;
merge(channels_3, img_merge);
cvtColor(img_merge, img_merge, COLOR_HSV2BGR_FULL);
imshow("img_merge", img_merge);
waitKey();
}
其它文章简单有效的低照度增强_Asthestarsfalll的博客-CSDN博客_低照度增强 也是v处理的