Как получить яркость и контрастность пикселей изображения в OpenCv c ++? - PullRequest
0 голосов
/ 25 мая 2020

Как получить яркость и ограничение диапазона пикселей и применить их для установки градиента на другом изображении в opencv c ++? Я пытался сделать это с помощью этого кода, но не получил хорошего результата

Я хочу применить яркость и ограничение второй части изображения1 к первой части изображения2, чтобы применить градиент. конечная цель - сшить два изображения

enter image description here

Mat image = imread("1.jpg" );
Mat image2 = imread("2.jpg" );
const int darkness_threshold = 128;


cv::Mat hsv;
cvtColor(image, hsv, COLOR_BGR2HSV);
const auto result = cv::mean(hsv);

cv::Mat hsv2;
cvtColor(image2, hsv2, COLOR_BGR2HSV);
const auto result2 = cv::mean(hsv2);

cout<<"resultat1: "<<result<<endl;
cout<<"resultat2: "<<result2<<endl;


Mat new_image = Mat::zeros( image.size(), image.type() );
double alpha = result2[0] - result[0]; 
double beta = result2[2] - result[2];      
for( int y = 0; y < image.rows; y++ ) {
    for( int x = 0; x < image.cols; x++ ) {
        for( int c = 0; c < image.channels(); c++ ) {
            new_image.at<Vec3b>(y,x)[c] =
              saturate_cast<uchar>( alpha*image.at<Vec3b>(y,x)[c] + beta );
        }
    }
}
namedWindow("New Image",WINDOW_NORMAL);
imshow("New Image", new_image);
namedWindow("Image2",WINDOW_NORMAL);
imshow("Image2", image2);

imwrite("imgs1.jpg",new_image);
imwrite("imgs2.jpg",image2);
waitKey();
return 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...