news 2026/2/15 5:48:06

OpenCV去雾:Dark Channel Prior(暗通道)算法代码,不能用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenCV去雾:Dark Channel Prior(暗通道)算法代码,不能用

这个代码完全不能用。得到的画面是黑乎乎的。

我也搞不明白,这样的东西也好意思放出来。

  • 代码
#include <opencv2/opencv.hpp> #include <opencv2/ximgproc.hpp> using namespace std; using namespace cv; cv::Mat computeDarkChannel(const cv::Mat& src, int patchSize = 15) { CV_Assert(src.type() == CV_8UC3); cv::Mat dark = cv::Mat::zeros(src.size(), CV_8UC1); int radius = patchSize / 2; // 边界扩展:采用镜像填充避免边缘畸变 cv::Mat padded; cv::copyMakeBorder(src, padded, radius, radius, radius, radius, cv::BORDER_REFLECT); for (int i = 0; i < src.rows; ++i) { for (int j = 0; j < src.cols; ++j) { uchar minVal = 255; for (int di = 0; di < patchSize; ++di) { for (int dj = 0; dj < patchSize; ++dj) { const cv::Vec3b& pixel = padded.at<cv::Vec3b>(i + di, j + dj); uchar tempMin = std::min({pixel[0], pixel[1], pixel[2]}); minVal = std::min(minVal, tempMin); } } dark.at<uchar>(i, j) = minVal; } } return dark; } cv::Mat refineTransmission(const cv::Mat& transmission, const cv::Mat& guide, int r = 60, double eps = 1e-3) { cv::Mat refined; cv::ximgproc::guidedFilter(guide, transmission, refined, r, eps); return refined; } cv::Mat dehazeImage(const cv::Mat& hazy, int patchSize = 15, double omega = 0.95, double t0 = 0.1) { cv::Mat darkChannel = computeDarkChannel(hazy, patchSize); cv::Scalar meanIntensity = cv::mean(hazy)[0]; double A = *std::max_element(darkChannel.begin<uchar>(), darkChannel.end<uchar>()) * 255.0 / 255.0; cv::Mat trans = 1.0 - omega * (darkChannel / (double)A); trans = refineTransmission(trans, hazy, 60, 1e-3); cv::threshold(trans, trans, t0, t0, cv::THRESH_TOZERO); cv::Mat result = cv::Mat::zeros(hazy.size(), hazy.type()); for (int i = 0; i < hazy.rows; ++i) { for (int j = 0; j < hazy.cols; ++j) { cv::Vec3f pixel = hazy.at<cv::Vec3b>(i, j); float t = trans.at<uchar>(i, j) / 255.0f; t = std::max(t, (float)t0); for (int c = 0; c < 3; ++c) { result.at<cv::Vec3b>(i, j)[c] = cv::saturate_cast<uchar>((pixel[c] - A) / std::max(t, 0.01f) + A); } } } return result; } int main(int argc, char** argv) { cv::Mat image = cv::imread("fog.png"); if (image.empty()) { std::cerr << "Error: Could not load image." << std::endl; return -1; } cv::imshow("Hazy Input", image); cv::Mat defog = dehazeImage(image); cv::imshow("defog", defog); cv::waitKey(0); }
  • 脚本
OPENCV_INCLUDE=/usr/include/opencv4 # OPENCV_LIB=/usr/local/lib OPENCV_LIB=/usr/lib/x86_64-linux-gnu EXE_FILE=defog CODE_FILE=defog1.cpp rm ${EXE_FILE} reset g++ \ -Wl,-rpath=.:${OPENCV_LIB} \ ${CODE_FILE} \ -o ${EXE_FILE} \ -I${OPENCV_INCLUDE} \ -L${OPENCV_LIB} \ -lopencv_core -lopencv_highgui \ -lopencv_features2d -lopencv_imgproc \ -lopencv_videoio -lopencv_videostab \ -lopencv_optflow -lopencv_tracking \ -lopencv_video -lopencv_bgsegm \ -lopencv_calib3d -lopencv_ximgproc \ -lopencv_imgcodecs # `pkg-config --cflags --libs opencv4` ./${EXE_FILE} fog.png
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 8:30:40

云原生领域 Chart 的关键组件介绍

云原生领域 Chart 的关键组件介绍 关键词&#xff1a;云原生、Chart、Helm、Kubernetes、应用打包、声明式部署、微服务架构 摘要&#xff1a;本文深入解析云原生领域中用于应用打包和部署的核心单元——Chart的关键组件。通过对Chart架构体系、核心文件结构、模板引擎原理、依…

作者头像 李华
网站建设 2026/2/14 17:59:59

如何在48小时内完成Open-AutoGLM本地部署?资深架构师亲授秘诀

第一章&#xff1a;Open-AutoGLM本地搭建的核心挑战在本地环境中部署 Open-AutoGLM 模型面临多重技术障碍&#xff0c;涉及硬件资源、依赖管理与系统兼容性等多个层面。由于该模型基于大规模生成语言架构&#xff0c;对计算资源的需求尤为严苛&#xff0c;普通开发设备往往难以…

作者头像 李华
网站建设 2026/2/14 19:34:05

智谱清言Open-AutoGLM插件上线:开发者必须了解的8大功能特性

第一章&#xff1a;智谱清言Open-AutoGLM插件概述Open-AutoGLM 是智谱清言推出的一款面向自动化自然语言任务处理的开源插件&#xff0c;旨在降低大模型应用开发门槛&#xff0c;提升任务执行效率。该插件基于 GLM 大模型架构&#xff0c;支持任务自动规划、工具调用与多步推理…

作者头像 李华
网站建设 2026/2/14 1:29:45

【大模型私有化部署新突破】:Open-AutoGLM本地环境搭建全解析

第一章&#xff1a;Open-AutoGLM本地搭建背景与意义随着大语言模型在自动化推理、代码生成和自然语言理解等领域的广泛应用&#xff0c;本地化部署高性能开源模型成为开发者和研究团队的重要需求。Open-AutoGLM 作为基于 AutoGLM 架构的开放实现&#xff0c;支持高效的语言理解…

作者头像 李华
网站建设 2026/2/12 19:05:36

超纯水中的有机物用什么来表征?含量有多少?怎么去除?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测技术社区&#xff0c;星球号&#xff1a;63559049&#xff09;里的学员问&#xff1a;超纯水中的有机物用什么来表征&#xff1f;含量有多少&#xff1f;怎么去除&#xff1f;用什么来反馈水中有机物&#xff1f;如上图&a…

作者头像 李华