# -*- coding: utf-8 -*-
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt#读取图像
img = cv.imread('d:/paojie.png')
img1 = cv.cvtColor(img, cv.COLOR_BGR2RGB)#灰度化处理图像
grayImage = cv.cvtColor(img, cv.COLOR_BGR2GRAY)#高斯滤波
gaussianBlur = cv.GaussianBlur(grayImage, (3,3), 0)#阈值处理
ret, binary = cv.threshold(gaussianBlur, 0, 255, cv.THRESH_BINARY+cv.THRESH_OTSU)#Roberts算子
kernelx = np.array([[-1,0],[0,1]], dtype=int)
kernely = np.array([[0,-1],[1,0]], dtype=int)
x = cv.filter2D(binary, cv.CV_16S, kernelx)
y = cv.filter2D(binary, cv.CV_16S, kernely)
absX = cv.convertScaleAbs(x)
absY = cv.convertScaleAbs(y)
Roberts = cv.addWeighted(absX, 0.5, absY, 0.5, 0)#Prewitt算子
kernelx = np.array([[1,1,1],[0,0,0],[-1,-1,-1]], dtype=int)
kernely = np.array([[-1,0,1],[-1,0,1],[-1,0,1]], dtype=int)
x = cv.filter2D(binary, cv.CV_16S, kernelx)
y = cv.filter2D(binary, cv.CV_16S, kernely)
absX = cv.convertScaleAbs(x)
absY = cv.convertScaleAbs(y)
Prewitt = cv.addWeighted(absX,0.5,absY,0.5,0)#Sobel算子
x = cv.Sobel(binary, cv.CV_16S, 1, 0)
y = cv.Sobel(binary, cv.CV_16S, 0, 1)
absX = cv.convertScaleAbs(x)
absY = cv.convertScaleAbs(y)
Sobel = cv.addWeighted(absX, 0.5, absY, 0.5, 0)#拉普拉斯算法
dst = cv.Laplacian(binary, cv.CV_16S, ksize = 3)
Laplacian = cv.convertScaleAbs(dst) #效果图
titles = ['Source Image', 'Binary Image', 'Roberts Image','Prewitt Image','Sobel Image', 'Laplacian Image']
images = [img1, binary, Roberts, Prewitt, Sobel, Laplacian]
for i in np.arange(6):  plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')  plt.title(titles[i])  plt.xticks([]),plt.yticks([])
plt.show()

输出结果如图所示。其中,Laplacian算子对噪声比较敏感,由于其算法可能会出现双像素边界,常用来判断边缘像素位于图像的明区或暗区,很少用于边缘检测;Robert算子对陡峭的低噪声图像效果较好,尤其是边缘正负45度较多的图像,但定位准确率较差;Prewitt算子对灰度渐变的图像边缘提取效果较好,而没有考虑相邻点的距离远近对当前像素点的影响;Sobel算子考虑了综合因素,对噪声较多的图像处理效果更好。

表示各种边缘检测算子

opencv 不同边缘检测算子效果比较相关推荐

  1. opencv sobe 边缘检测算子

    #coding=utf-8 import cv2 import numpy as np img = cv2.imread("jr.png", 0)x = cv2.Sobel(img ...

  2. 利用Canny边缘检测算子进行边缘检测的原理及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 Canny算子是John Canny在1986年 ...

  3. python 视觉技术_python+opencv实现机器视觉基础技术(边缘提取,图像滤波,边缘检测算子,投影,车牌字符分割)...

    机器视觉是人工智能正在快速发展的一个分支.简单说来,机器视觉就是用机器代替人眼来做测量和判断.它是一项综合技术,包括图像处理.机械工程技术.控制.电光源照明.光学成像.传感器.模拟与数字视频技术.计算 ...

  4. opencv边缘检测算子

    实验三 边缘检测算子 一. 实验目的 利用opencv或其他工具编写实现下图的sobel算子和robert算子边缘检测 二. 实验过程 利用opencv python实现sobel算子和robert算 ...

  5. 【opencv】19.图像边缘检测算子数学原理、像素一二阶导数的意义

    1.像素一二阶导数的意义 下面导数是数学中的定义 一阶导数定义: { f ′ ( x ) = lim ⁡ Δ x → 0 f ( x + Δ x ) − f ( x ) Δ x f ′ ( x ) = ...

  6. Opencv学习笔记(二十三) 改进边缘检测算子-----Marr-Hildresh

    Marr-Hildresh边缘检测算子,用于解决边缘检测的核心问题---定位精度和抑制噪声.Marr-Hildreth算子以高斯函数为平滑算子,结合拉普拉斯算子提取二阶导数的零交叉理论进行边缘检测.边 ...

  7. 《OpenCV3编程入门》学习笔记7 图像变换(一)基于OpenCV的边缘检测

    第7章 图像变换 7.1 基于OpenCV的边缘检测 7.1.1 边缘检测的一般步骤 1.滤波:边缘检测算法主要基于图像强度的一阶和二阶导数,导数对噪声敏感,所以要滤波 2.增强:确定图像各点邻域强度 ...

  8. opencv Canny边缘检测用法

    <span style="color:#000080">1. cv2.Canny(image, threshold1, threshold2[, edges[, ape ...

  9. OpenCV Sobel 边缘检测

    Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel算子对边缘定位不是很准确,图像的边缘不止一个像素:当对精度要求不是很高时,是一种较为常用的边缘检测方法. OpenCV中sobe ...

最新文章

  1. 在visual studio 2010中调用ffmpeg
  2. ubuntu系统安装FTP
  3. mysql sql优化_MySQL数据库SQL语句优化原理专题(三)
  4. 神奇的机器人评课_《聪明的机器人》教学反思
  5. 7.4.4 主成分分析 PCA
  6. 现代人的压力和焦虑_设计师如何建立减少焦虑和压力的体验
  7. 一个IT时代的终结:109岁的IBM将分拆为两家公司
  8. api工具 graphql_使用GraphQL构建更好的可发现的API
  9. Numpy的使用(3)
  10. c#2.0语法新关键字 partial
  11. 联想网络同传的工作日志
  12. 使用微PE工具箱制作U盘启动盘
  13. 基于Multism的高频小信号谐振放大器仿真研究
  14. kettle执行结果面板步骤度量(一)——转换
  15. linux+中的su命令,Linux中如何使用SU命令(示例)
  16. 青龙面板跑爱企查脚本 兑换爱奇艺月卡 百度网盘会员等
  17. win10 1809无法更新(扩展EFI分区)
  18. 计算机毕业设计JAVA二手物品置换平台mybatis+源码+调试部署+系统+数据库+lw
  19. 转载_进程、轻量级进程(LWP)、线程
  20. 网站SEO:百度快排是如何实现的

热门文章

  1. python编程入门经典-Python编程入门经典PDF文档免费下载
  2. linux安装pdo mysql扩展_linux下php安装pdo_mysql扩展
  3. 信息孤岛影响_企业专访:以“信息化”冲破信息孤岛
  4. Axure的一些入门小案例
  5. 图像检索:FCTH(Fuzzy Color and Texture Histogram)算法
  6. 能安装python库的app_APP自动化之安装Python(类库)环境
  7. android打开文件管理获取文件名,如何从android中的文件路径获取文件名
  8. java制作纯字rpg小游戏_求java rpg小游戏源代码 最好是文字rpg 不需要很复杂 只是交作业用...
  9. svm 文本分类 matlab,livsvm文本分类总结详解
  10. 【NOILinux】VmWare15使用技巧