当前位置: 首页 > 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.dtcms.com/a/170937.html

相关文章:

  • AUTOSAR_BSW_从入门到精通学习笔记系列_EcuM
  • 仓颉编程语言:面向未来的全场景智能开发新范式
  • LeetCode 102题解 | 二叉树的层序遍历
  • BUUCTF——Fake XML cookbook
  • 13:图像处理—畸变矫正详解
  • 57认知干货:AI机器人产业
  • AIDC智算中心建设:计算力核心技术解析
  • 【深入浅出MySQL】之数据类型介绍
  • ES6入门---第三单元 模块一:类、继承
  • 分享一个Android中文汉字手写输入法并带有形近字联想功能
  • DeepSeek Copilot idea插件推荐
  • Allegro23.1新功能之如何设置高压爬电间距规则操作指导
  • Mamba+Attention+CNN 预测模型:破局长程依赖的计算机视觉新范式
  • ActiveMQ 与其他 MQ 的对比分析:Kafka/RocketMQ 的选型参考(二)
  • 【JLINK调试器】适配【大华HC32F4A0芯片】的完整解决方案
  • 数据结构--树状数组
  • opencv的contours
  • ABC404G 题解
  • 数据结构(4) 堆
  • Terraform 中的 external 数据块是什么?如何使用?
  • 软考-软件设计师中级备考 12、软件工程
  • Java 中使用 Callable 创建线程的方法
  • 【办公类-99-04】20250504闵豆统计表excle转PDF,合并PDF、添加中文字体页眉+边框下划线
  • postgresql数据库基本操作
  • JVM happens-before 原则有哪些?
  • 数字信号处理学习笔记--Chapter 1 离散时间信号与系统
  • AndroidLogger常用命令和搜索功能介绍
  • ESP32S3 多固件烧录方法、合并多个固件为单一固件方法
  • C语言实现数据结构:堆排序和二叉树_链式
  • 小土堆pytorch--tensorboard的使用