opencv中的图像亮度变换(图像增强)

    xiaoxiao2021-12-14  21

    #include <opencv.hpp> using namespace cv; using namespace std; int imageAdjust(Mat &src, Mat &dst, double low_in, double high_in, double low_out, double high_out, double gamma) { if (low_in < 0 && low_in >1 && high_in <0 && high_in >1 && low_out < 0 && low_out > 1 && high_out < 0 && high_out > 1 && low_out > high_out) return -1; double low2 = low_in * 255; double high2 = high_in * 255; double bottom2 = low_out * 255; double top2 = high_out * 255; double err_in = high2 - low2; double err_out = top2 - bottom2; int x, y; double val; uchar* p; //亮度变换 for (y = 0; y < src.rows; y++) { p = src.ptr<uchar>(y); //行指针 for (x = 0; x < src.cols; x++) { val = pow((p[x] - low2) / err_in, gamma)*err_out + bottom2; if (val > 255) val = 255; if (val < 0) val = 0; dst.at<uchar>(y, x) = (uchar)val; } } } int main(int argc, char* argv[]) { Mat src; src = imread("22.jpg",0); if(src.data == NULL) { cout << "read image failed" << endl; return -1; } imshow("rice【源图像】",src); Mat dst = src.clone(); //图像亮度变换 imageAdjust(src,dst,0,0.5,0.5,1,1); imshow("亮度变换后的图",dst); waitKey(0); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-963601.html

    最新回复(0)