径向过度曝光修复了容光的OpenCV
Radial Overexposure Fix Gradiant OpenCV
我有一台相机和一盏灯。相机自动拍照,灯是刚性的。
我的每张照片中间都有一个亮点,外面越来越暗(线性(。
有没有一种简单的方法可以使中间变暗,或使外部变亮以适应这种情况(最好是渐变(?
我正在使用OpenCV和C++ API。
谢谢你的帮助。
如果没有一个例子,很难说你到底想做什么。但是,假设所有图像中的效果完全相同,并且您希望对每个图像应用相同的转换。
您说效果是线性的,并假设您想使中心变暗 20%,离中心最远的像素亮 20%。让我们进一步假设光学中心位于图像的中心(在实践中不一定如此(。
所以你有一个你想要操作的图像cv::Mat img;
,我假设它包含 CV_32F 类型的数据(如果不是浮点数或双值,转换,可以是多个通道(。您创建另一个 cv::Mat
//first, make a mask image to multiply the image with
cv::Mat mask = cv::Mat::zeros(img.rows,img.cols,CV_32F);
float maxdist = std::sqrt(img.rows*img.rows+img.cols*img.cols)/2;
cv::Point2f center(img.cols*0.5,img.rows*0.5);
for (int j=0;j<img.rows;++j)
for (int i=0;i<img.cols;++i)
{
cv::Point2f p(i,j);
cv::Point2f diff(p-center);
float dist(std::sqrt(diff.dot(diff)));
float factor(0.8+0.4*dist/maxdist);
mask.at<float>(j,i) = factor;
}
//apply the transformation, to as many images as you like
img = img.mul(mask);
这不会检查溢出,之后您可能希望也可能不想执行此操作。但是从您的问题来看,这将是一种简单的方法。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- OpenCV C++.快速计算混淆矩阵
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 哪些库可以通过Opencv调整曝光率
- 安装opencv失败-粘贴CMakeError.log的内容
- C++中的openCV Mat访问冲突
- OpenCV Android C++ imwrite not found
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- OpenCV 4.1.2 - 从网络摄像头获取帧并将其拆分
- C++ OpenCV 卡尔曼滤波器构造函数错误
- 径向过度曝光修复了容光的OpenCV
- 如何使用opencv设置DMM 27UJ003-ML相机的曝光时间
- 在 OpenCV 中,设置曝光会导致我的网络摄像头软件无法自动调整曝光