实现思路:

1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值)

2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值

3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8

注意:

必须对求得的卷积和的值求绝对值;矩阵数据类型进行转化。

完整代码:

import cv2

import numpy as np

# robert 算子[[-1,-1],[1,1]]

def robert_suanzi(img):

r, c = img.shape

r_sunnzi = [[-1,-1],[1,1]]

for x in range(r):

for y in range(c):

if (y + 2 <= c) and (x + 2 <= r):

imgChild = img[x:x+2, y:y+2]

list_robert = r_sunnzi*imgChild

img[x, y] = abs(list_robert.sum())# 求和加绝对值

return img

# # sobel算子的实现

def sobel_suanzi(img):

r, c = img.shape

new_image = np.zeros((r, c))

new_imageX = np.zeros(img.shape)

new_imageY = np.zeros(img.shape)

s_suanziX = np.array([[-1,0,1],[-2,0,2],[-1,0,1]])# X方向

s_suanziY = np.array([[-1,-2,-1],[0,0,0],[1,2,1]])

for i in range(r-2):

for j in range(c-2):

new_imageX[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * s_suanziX))

new_imageY[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * s_suanziY))

new_image[i+1, j+1] = (new_imageX[i+1, j+1]*new_imageX[i+1,j+1] + new_imageY[i+1, j+1]*new_imageY[i+1,j+1])**0.5

# return np.uint8(new_imageX)

# return np.uint8(new_imageY)

return np.uint8(new_image)# 无方向算子处理的图像

# Laplace算子

# 常用的Laplace算子模板 [[0,1,0],[1,-4,1],[0,1,0]] [[1,1,1],[1,-8,1],[1,1,1]]

def Laplace_suanzi(img):

r, c = img.shape

new_image = np.zeros((r, c))

L_sunnzi = np.array([[0,-1,0],[-1,4,-1],[0,-1,0]])

# L_sunnzi = np.array([[1,1,1],[1,-8,1],[1,1,1]])

for i in range(r-2):

for j in range(c-2):

new_image[i+1, j+1] = abs(np.sum(img[i:i+3, j:j+3] * L_sunnzi))

return np.uint8(new_image)

img = cv2.imread(‘1.jpg‘, cv2.IMREAD_GRAYSCALE)

cv2.imshow(‘image‘, img)

# # robers算子

out_robert = robert_suanzi(img)

cv2.imshow(‘out_robert_image‘, out_robert)

# sobel 算子

out_sobel = sobel_suanzi(img)

cv2.imshow(‘out_sobel_image‘, out_sobel)

# Laplace算子

out_laplace = Laplace_suanzi(img)

cv2.imshow(‘out_laplace_image‘, out_laplace)

cv2.waitKey(0)

cv2.destroyAllWindows()

python sobel算子_python自编程序实现——robert算子、sobel算子、Laplace算子进行图像边缘提取...相关推荐

  1. python图像边缘提取_python通过robert、sobel、Laplace算子实现图像边缘提取详解

    实现思路: 1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值) 2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值 3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8 注意: ...

  2. python实现sobel_python通过robert、sobel、Laplace算子实现图像边缘提取详解

    实现思路: 1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值) 2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值 3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8 注意: ...

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

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

  4. 图像处理中的梯度、导数如何求?(Robert算子,Sobel算子,Prewitt算子,Laplace算子)

    梯度的求法是多种多样的,根据不同的处理需要选择合适的算子(模版). 1.水平垂直差分法 2.Robert 梯度算子 3.Sobel算子               垂直方向               ...

  5. python边缘检测代码_python Canny边缘检测算法的实现

    图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号, ...

  6. python canny检测_python Canny边缘检测算法的实现

    图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号, ...

  7. 【OpenCV 】Sobel 导数/Laplace 算子/Canny 边缘检测

    canny边缘检测见OpenCV [七]----边缘提取算子(图像边缘提取)--canny算法的原理及实现 1 Sobel 导数 1.1.1 原因 上面两节我们已经学习了卷积操作.一个最重要的卷积运算 ...

  8. Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习

    Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...

  9. python反向切片_python切片

    最近抽空的时候在学习python, 所以也会时不时的更新一些python的学习笔记, 今天就更新一个python比较特殊的地方, 切片. 在python中, 提供了一种叫做切片的方法用来截取数组(在p ...

最新文章

  1. Qt实现主界面圆角化
  2. win10启动修复_以安全模式启动win10的4种方法,简单高效,修复电脑故障必用技巧...
  3. java编程计算_java编程之输入并进行计算
  4. K8S实战之环境部署1.18(一)
  5. 深度学习2.0-23.Keras高层接口之CIFAR10自定义网络实战
  6. vue 引入json地图_vue中echarts引入中国地图
  7. Misra-C编码规范全解读 - Misra C 概述
  8. Redis数据结构-字符串对象(SDS)
  9. IP-MAC绑定到底有多重要?(白目的见解)
  10. 深色背景黑底白字,蓝底白字课件材料“洗白”打印,ps批处理教程
  11. Final Cut Pro X Guru: Advanced Trimming Final Cut Pro X Guru:高级修剪 Lynda课程中文字幕
  12. 计算机学院举办 温暖冬日 感恩社会 活动,温暖冬日 感恩社会 计算机学院举办冬季送温暖活动...
  13. django批量修改table_Django 使用 modelformset 组件批量修改表单数据
  14. 解决打印机“正在删除、正在打印”没反应问题
  15. 如何修改桌面的存放路径?(将桌面放到D盘或E盘)
  16. PHP+在线电子小说网站的设计与实现 毕业设计-附源码260907
  17. 全国行政分区明细表(省市区比较2010年左右)(第一部分)
  18. 15、项目:见缝插针游戏---界面
  19. 我入门 Python 后总结的基础教程
  20. “云”中智控 IT管理新境界

热门文章

  1. HTML中的大于号和小于号怎样用代码打出来?
  2. b标签设置margin值没用_关于内层DIV设置margin-top不起作用的解决方案
  3. 【FPGA教程案例99】数据处理2——基于DA分布式算法的FIR滤波器FPGA实现
  4. python 连乘函数_python中如何进行连乘计算
  5. 影像的滑动窗口裁切与拼接(附代码)
  6. 可变悬挂调节软硬_大众cc可变悬架软硬调节是什么意思
  7. windows10如何修改hosts文件,微软官方回复,博主亲测有效
  8. 用Excel仿制了一个玫瑰图!
  9. matlab:人脸识别
  10. 为什么PR导出来的视频,偏紫色?