news 2026/4/15 18:30:42

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/4/4 15:28:54

计算机毕业设计springboot基于Web的水资源评价系统 基于Spring Boot框架的Web水资源评估与管理系统设计 Spring Boot驱动的Web水资源评价平台开发

计算机毕业设计springboot基于Web的水资源评价系统u81r79&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着社会的快速发展&#xff0c;水资源管理的重要性日益凸显。传统的水资…

作者头像 李华
网站建设 2026/4/7 11:52:10

Kubernetes测试环境部署:从原则到落地的完整实践指南

测试驱动的基础设施‌ 在云原生成为主流的今天&#xff0c;Kubernetes (K8s) 已成为应用部署与运维的事实标准。对于软件测试从业者而言&#xff0c;测试活动的前沿已从单一应用扩展到包含编排、调度、网络、存储在内的整个动态基础设施层。传统的在静态环境中执行测试用例的模…

作者头像 李华
网站建设 2026/3/29 5:36:47

Open-AutoGLM如何重塑AI开发范式:5大关键技术深度解析

第一章&#xff1a;Open-AutoGLM如何和AI结合Open-AutoGLM 是一个面向自动化自然语言处理任务的开源框架&#xff0c;其核心优势在于能够无缝集成多种AI模型&#xff0c;尤其是基于GLM架构的大语言模型。通过灵活的接口设计&#xff0c;开发者可以将AI能力嵌入到数据预处理、模…

作者头像 李华
网站建设 2026/4/8 18:42:55

替沃扎尼(Fotivda)治疗晚期肾癌的疗效与安全性全解析

晚期肾癌的治疗一直是临床关注的重点&#xff0c;尤其是对于既往接受过抗血管生成治疗或免疫治疗失败的患者&#xff0c;治疗选择有限且效果往往不尽如人意。替沃扎尼&#xff08;Fotivda&#xff09;作为一种新型口服酪氨酸激酶抑制剂&#xff08;TKI&#xff09;&#xff0c;…

作者头像 李华
网站建设 2026/4/15 14:21:44

【独家深度测评】Open-AutoGLM:综合得分第一的底层逻辑剖析

第一章&#xff1a;Open-AutoGLM综合得分第一的底层逻辑总览Open-AutoGLM在多个权威评测中斩获综合得分第一&#xff0c;其背后的技术架构与设计哲学值得深入剖析。该模型的成功并非单一技术突破的结果&#xff0c;而是系统性优化的集大成体现&#xff0c;涵盖训练策略、推理机…

作者头像 李华