失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 低照度图像增强代码

低照度图像增强代码

时间:2020-12-02 02:11:00

相关推荐

低照度图像增强代码

低照度图像增强代码

代码

代码

// An highlighted block#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>#include <stdio.h>//#include <cv.h>//#include<highgui.h>using namespace cv;using namespace std;//图像的三个颜色通道#define BLUE 0#define GREEN1#define RED 2#ifndef SCREEN_XY#define SCREEN_XY(x, y) (255 - ((255 - (x))*(255 - (y)) >> 8))//将新的图层与原图做滤色混合//x为原始图像像素值,y为新图层的像素值#endifint main(){char imgfile[256] = "E:\\新桌面\\新建文件夹 (4)\\Project1\\Low Light\\09.png";//载入需要增强图像Mat src = imread(imgfile);//载入图像需要是三通道彩色图像imshow("待增强图像", src);int size = src.cols * src.rows;//获取原图像的大小uchar r = 0, g = 0, b = 0, g_alpha = 0;//定义参数初始值uchar *pSrcData = src.data;//获取图图像的像素值for (int i = 0; i < size; i++, pSrcData += 3)//{//将绿色通道反色,与b、g、r通道分别相乘,得到新的图层颜色g_alpha = 255 - pSrcData[GREEN];//将绿色通道反色b = pSrcData[BLUE] * g_alpha >> 8;g = pSrcData[GREEN] * g_alpha >> 8;r = pSrcData[RED] * g_alpha >> 8;//将上个步骤得到的新图层,与原始图做滤色混合,即执行f(a,b)=1-(1-a)*(1-b)的操作pSrcData[BLUE] = SCREEN_XY(pSrcData[BLUE], b);//pSrcData[GREEN] = SCREEN_XY(pSrcData[GREEN], g);pSrcData[RED] = SCREEN_XY(pSrcData[RED], r);//如果发现使用一次照度增强后,图片仍然偏暗,再运行一次上述代码//如果觉得合适,就只增强一次即可g_alpha = 255 - pSrcData[GREEN];b = pSrcData[BLUE] * g_alpha >> 8;g = pSrcData[GREEN] * g_alpha >> 8;r = pSrcData[RED] * g_alpha >> 8;pSrcData[BLUE] = SCREEN_XY(pSrcData[BLUE], b);pSrcData[GREEN] = SCREEN_XY(pSrcData[GREEN], g);pSrcData[RED] = SCREEN_XY(pSrcData[RED], r);}imshow("增强后的图像", src);imwrite("test09.png",src);waitKey();return 0;}

如果觉得《低照度图像增强代码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。