实现思路:

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图像边缘提取_python通过robert、sobel、Laplace算子实现图像边缘提取详解相关推荐

  1. python椭圆代码_Python实现霍夫圆和椭圆变换代码详解

    这篇文章主要介绍了Python实现霍夫圆和椭圆变换代码详解,具有一定借鉴价值,需要的朋友可以参考下 在极坐标中,圆的表示方式为: x=x0 rcosθ y=y0 rsinθ 圆心为(x0,y0),r为 ...

  2. python脚本例子_python dict 字典 以及 赋值 引用的一些实例(详解)

    最近在做一个很大的数据库方面的东东,要用到根据数值来查找,于是想到了python中的字典,平时没用过dict这个东东 用的最多的还是 list 和 tuple (网上查 用法一大堆) 看了一下创建字典 ...

  3. python 字符串替换_Python基础教程,第四讲,字符串详解

    本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...

  4. python转盘抽奖_Python使用Tkinter实现转盘抽奖器的步骤详解

    我使用 Python 中的 Tkinter 模块实现了一个简单的滚动抽奖器,接下来继续写一个简单的转盘抽奖器. 滚动抽奖器与点名的场景相似,是从一群人中抽出中奖的人,奖品是提前确定了的,抽奖只是确定中 ...

  5. python贪婪匹配_python re模块匹配贪婪和非贪婪模式详解

    python re模块匹配贪婪和非贪婪模式详解 这篇文章主要介绍了python re模块匹配贪婪和非贪婪模式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友 ...

  6. python 数学公式识别_Python实现基于KNN算法的笔迹识别功能详解

    本文实例讲述了Python实现基于KNN算法的笔迹识别功能.分享给大家供大家参考,具体如下: 需要用到: Numpy库 Pandas库 手写识别数据 点击此处本站下载. 数据说明: 数据共有785列, ...

  7. python中奖号_Python分析彩票记录并预测中奖号码过程详解

    0 引言 上周被一则新闻震惊到了,<2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 >,在2019年5月2日开奖的双色球中,广东中山一位彩民博中2454万元,兑奖时间截至201 ...

  8. python密码教程_Python实现密钥密码(加解密)实例详解

    密钥密码 """ 如密钥短语密码为: university -> universty 明文: abcdefghijklmnopqrstuvwxyz 密文:jklmo ...

  9. 2020.11.05 使用OpenCV进行自定义线性滤波 【OpenCV C++ Robert/Sobel/Laplace】

    使用OpenCV进行自定义线性滤波/Robert/Sobel/Laplace 源代码: // testOpencv14.cpp : 此文件包含 "main" 函数.程序执行将在此处 ...

  10. [python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解

    一.学习目标 了解什么是色彩空间 了解opencv中色彩空间的转换 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python opencv ...

最新文章

  1. C++ 虚函数在基类与派生类对象间的表现及其分析
  2. S3C6410 KeyPad驱动(上)
  3. php fckeditor,php --- fckeditor
  4. LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  5. 7个月,4000+人,500+源码笔记,诚邀你参加源码共读~
  6. python socket udp并发_Python进阶----UDP协议使用socket通信,socketserver模块实现并发
  7. 搜索智能提示suggestion,附近地点搜索
  8. python快递费用计算_[Python]简单用Python写个查询快递的程序最后附源代码
  9. 《游戏编程模式》一7.5 状态对象应该放在哪里呢
  10. snmpset对象不可写_别再问了,好吗?Java字符串一定是不可变的
  11. Y2011_M12_TranslateEnglish
  12. 阿里高级技术专家:研发效能的追求永无止境 1
  13. Android自定义输入车牌号键盘、车牌简称 | 数字 | 字母键盘
  14. 【python】52周存钱法
  15. CocosCreator-动态生成3种敌人
  16. android pdf转换base64 服务端转为文件
  17. java数据集导出excel_使用Apache Poi将结果集从Java数据库导出到Excel
  18. Python定义全局变量的用法
  19. 以matlab为基础数学分析,matlab与数学分析.docx
  20. java求约数_[转载]Java求最大公约数与最小公倍数

热门文章

  1. 完全备份指的是对整个计算机系统,网络安全管理实践题库:在备份技术中,差分备份就是对整个系统所有文件进行完全备份,包括所有系统和数据。()...
  2. 微博3元一万粉软件_实测3款朋友圈很火的“日赚分红300元”游戏软件究竟靠不靠谱!!...
  3. javascript 本地对象和内置对象_JavaScript 的面向对象
  4. python实时定位_selenium python 一些操作和定位收集
  5. JS / 闭包的理解
  6. Cpp 对象模型探索 / 含有虚基类的类的内存布局
  7. 程序员的520--8ms给你无法复制的花式告白
  8. brew install php55redis,Mac下安装LNMP环境
  9. python子进程关闭fd_如果创建了multiprocessing.Pool,Python子进程wait()将失败
  10. u盘数据恢复的原理_日臻薄技 | 电脑回收站数据恢复的三个方法