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

8.1差分边缘检测

基本概念

差分边缘检测是一种图像处理技术,用于检测图像中的边缘。边缘是指图像中灰度值发生显著变化的区域。差分边缘检测通常通过计算图像的梯度来实现,梯度反映了灰度值的变化率。在OpenCV中,可以使用不同的算子来检测不同方向的边缘,如垂直边缘水平边缘对角线边缘

边缘检测原理

边缘检测通常涉及到一阶或二阶导数的计算。一阶导数反映了灰度值的变化率,而二阶导数则反映了灰度值变化率的变化率。一阶导数的绝对值较大处通常对应于边缘位置。

实验代码

 #include "pch.h"
#include <iostream>#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;//#pragma comment(lib,"opencv_world450d.lib")// 图像差分操作
void diffOperation(const cv::Mat srcImage, cv::Mat& edgeXImage,cv::Mat& edgeYImage)
{cv::Mat tempImage = srcImage.clone();int nRows = tempImage.rows;int nCols = tempImage.cols;for (int i = 0; i < nRows - 1; i++){for (int j = 0; j < nCols - 1; j++){// 计算垂直边边缘edgeXImage.at<uchar>(i, j) =abs(tempImage.at<uchar>(i + 1, j) -tempImage.at<uchar>(i, j));// 计算水平边缘edgeYImage.at<uchar>(i, j) =abs(tempImage.at<uchar>(i, j + 1) -tempImage.at<uchar>(i, j));}}
}int main()
{cv::Mat srcImage = cv::imread("03.jpeg");if (!srcImage.data)return -1;namedWindow("原图", WINDOW_NORMAL);cv::imshow("原图", srcImage);cv::Mat edgeXImage(srcImage.size(), srcImage.type());cv::Mat edgeYImage(srcImage.size(), srcImage.type());// 计算差分图像diffOperation(srcImage, edgeXImage, edgeYImage);namedWindow("差分边缘X图", WINDOW_NORMAL);namedWindow("差分边缘Y图", WINDOW_NORMAL);cv::imshow("差分边缘X图", edgeXImage);cv::imshow("差分边缘Y图", edgeYImage);cv::Mat edgeImage(srcImage.size(), srcImage.type());// 水平与垂直边缘图像叠加addWeighted(edgeXImage, 0.5, edgeYImage,0.5, 0.0, edgeImage);namedWindow("边缘图", WINDOW_NORMAL);cv::imshow("边缘图", edgeImage);cv::waitKey(0);return 0;
}

运行结果


http://www.mrgr.cn/news/30650.html

相关文章:

  • 代码修改材质参数
  • gitlab与jenkins
  • go语言使用总结(持续更新)
  • 对node工程进行压力测试与性能分析
  • Jmeter中的定时器(二)
  • 网络安全-Linux基础(bash脚本)
  • 介绍几个AI生成视频的工具
  • 新发布的OpenAI o1生成式AI模型在强化学习方面迈出了重要的一步
  • iptables 基础示例
  • 电脑维修的基本原则
  • AI助力智慧农田作物病虫害监测,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建花田作物种植场景下棉花作物常见病虫害检测识别系统
  • 【ShuQiHere】 从逻辑门到组合电路:构建数字系统的核心
  • Python习题 192:编写一个猜单词游戏
  • 算法打卡 Day34(贪心算法)-分发饼干 + 摆动序列 + 最大子序和
  • 链式栈讲解
  • id 命令:输出用户的UID、GID和属组
  • C语言中的一些小知识(二)
  • 代码随想录Day50|图论Part01,leetcode题目:98. 所有可达路径
  • 科创孵化昌平,创新创业求发展
  • 专题六_模拟_算法详细总结
  • 计算机毕业设计Python+Flask微博情感分析 微博舆情预测 微博爬虫 微博大数据 舆情分析系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI
  • 结构体易忘点
  • solidwork剪裁实体
  • Ubuntu22.04关闭631端口的方法
  • 【CSS Tricks】一种基于AV1视频格式的现代图像格式-AVIF
  • PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题