当前位置: 首页 > news >正文

OpenCv实战笔记(2)基于opencv和qt对图像进行灰度化 → 降噪 → 边缘检测预处理及显示

一、实现效果
在这里插入图片描述
二、应用场景

这三步是经典的 “灰度化 → 降噪 → 边缘检测” 预处理流程,常用于:
计算机视觉任务(如物体识别、特征提取)。
图像分析(如文档扫描、车牌识别)。
减少后续算法的计算复杂度(灰度+模糊能显著提升性能)。

三、参考代码

//函数封装
cv::Mat convertToGray(const cv::Mat& src) {cv::Mat gray;if (src.channels() == 3)cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY);elsegray = src.clone();return gray;
} 
cv::Mat applyGaussianBlur(const cv::Mat& src, int kernelSize) {cv::Mat blurred;cv::GaussianBlur(src, blurred, cv::Size(kernelSize, kernelSize), 0);return blurred;
} 
cv::Mat detectEdges(const cv::Mat& src, double lowThreshold, double highThreshold) {cv::Mat gray = convertToGray(src);cv::Mat edges;cv::Canny(gray, edges, lowThreshold, highThreshold);return edges;
}
//函数使用
void MainWindow::sltLoadImage()
{QString fileName = QFileDialog::getOpenFileName(this, "Open Image", "", "Images (*.png *.jpg *.bmp)");if (fileName.isEmpty()) return;qDebug() << "fileName=>" << fileName;// 原始图像读取cv::Mat src = cv::imread(fileName.toStdString());if (src.empty()) {QMessageBox::warning(this, "Error", "Failed to load image.");return;}// 图像处理流程cv::Mat gray = image_processing::convertToGray(src);cv::Mat blurred = image_processing::applyGaussianBlur(gray);cv::Mat edges = image_processing::detectEdges(blurred);// 显示边缘检测图像(转为 RGB 后显示)daijacv::Mat edgeRgb;cv::cvtColor(edges, edgeRgb, cv::COLOR_GRAY2RGB);QImage qimg(edgeRgb.data, edgeRgb.cols, edgeRgb.rows, edgeRgb.step, QImage::Format_RGB888);ui->labelImage->setPixmap(QPixmap::fromImage(qimg).scaled(ui->labelImage->size(), Qt::KeepAspectRatio));
}
http://www.xdnf.cn/news/276967.html

相关文章:

  • Prompt多版本测试指南:如何科学评估不同提示词的效果
  • Coco AI 入驻 GitCode:打破数据孤岛,解锁智能协作新可能
  • Vue 3 中 ref 的使用例子
  • 从实列中学习linux shell12 通过Shell脚本来优化MySQL数据库性能,特别是慢SQL跟踪和索引优化
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 4 |IMU 死算与校正:惯性导航在资源受限环境的落地
  • Javase 基础加强 —— 04 集合2.0
  • Linux:web服务
  • 第14章:阿凡达的复兴与潘多拉的新生
  • 三、A2DP协议详解
  • 高可用架构设计——服务接口高可用
  • 北极花 APP:开启生物多样性调查新模式,助力生态保护
  • Lesson 16 A polite request
  • bc 命令
  • 系统架构设计师:设计模式——行为设计模式
  • Go语言chan底层原理
  • el-input Vue 3 focus聚焦
  • 无人机视觉:连接像素与现实世界 —— 像素与GPS坐标双向转换指南
  • 【Unity】使用XLua进行热修复
  • Nginx 核心功能之正反代理
  • 高等数学第三章---微分中值定理与导数的应用(§3.6 函数图像的描绘§3.7 曲率)
  • 开源 FEM(有限元分析)工程
  • 工业元宇宙:从虚拟仿真到虚实共生
  • C++负载均衡远程调用学习之实时监测与自动发布功能
  • Day110 | 灵神 | 二叉树 | 根到叶路径上的不足节点
  • Qt6 学习指南:前言+安装基本依赖
  • C++名称空间
  • Python 浮点数(float)类型详解
  • 苍穹外卖12
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.4 数据重复与去重(IDENTITY COLUMN/UNIQUE约束)
  • 什么是unordered_set?用大白话说