1.实验目的

利用opencv python实现对下图实现边缘检测算子。

2.实验过程

(1)在python安装opencv库, pip install opencv-python。

(2)在python安装Pillow库, pip install Pillow。同理,安装Numpy库。

(3)编写代码

代码如下:

import cv2
import numpy
import cv2 as cv
import numpy as np
from PIL import Image, ImageDraw, ImageFont
# coding=utf-8# cv2解决绘制中文乱码
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):if (isinstance(img, numpy.ndarray)):  # 判断是否OpenCV图片类型img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))# 创建一个可以在给定图像上绘图的对象draw = ImageDraw.Draw(img)# 字体的格式fontStyle = ImageFont.truetype("font/simsun.ttc", textSize, encoding="utf-8")# 绘制文本draw.text((left, top), text, textColor, font=fontStyle)# 转换回OpenCV格式return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)#图像反色
def inverse_color(image):height,width,temp = image.shapeimg2 = image.copy()for i in range(height):for j in range(width):img2[i,j]=(255-image[i,j][0],255-image[i,j][1],255-image[i,j][2])return img2 #读取图像
src = cv2.imread("dip_switch_02.bmp")
#反色
one = inverse_color(src)
#加入文本信息
image1=cv2ImgAddText(one,"原图像",5, 5, (255, 0, 0), 20)
#显示图片
cv2.imshow("image1",image1)#sobel算子边缘检测
sobelx = cv2.Sobel(one,cv2.CV_16S,1,0)
sobely = cv2.Sobel(one,cv2.CV_16S,0,1)
sobelx = cv2.convertScaleAbs(sobelx)
sobely = cv2.convertScaleAbs(sobely)
sobelXY = cv2.addWeighted(sobelx,0.5,sobely,0.5,0)
tow=inverse_color(sobelXY)
image2=cv2ImgAddText(tow,"sobel算子边缘检测结果",5, 5, (255, 0, 0), 20)
cv2.imshow("image2",image2)#robert算子边缘检测
kernelx = np.array([[-1,0],[0,1]], dtype=int)
kernely = np.array([[0,-1],[1,0]], dtype=int)
x = cv2.filter2D(one, cv2.CV_16S, kernelx)
y = cv2.filter2D(one, cv2.CV_16S, kernely)
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)
Roberts = cv2.addWeighted(absX,0.5,absY,0.5,0)
three=inverse_color(Roberts)
image3=cv2ImgAddText(three,"robert算子边缘检测结果",5, 5, (255, 0, 0), 20)
cv2.imshow("image3",image3)#gauss算子边缘检测
gray_lap=cv2.Laplacian(one,cv2.CV_16S,ksize=5)
gauss_img=cv2.convertScaleAbs(gray_lap)
dst3=cv2.bitwise_not(gauss_img)
image4=cv2ImgAddText(dst3,"gauss算子边缘检测结果",5, 5, (255, 0, 0), 20)
cv2.imshow("image4",image4)
cv2.waitKey(0)# 等待键盘输入,不输入则无限等待
cv2.destroyAllWindows()

3.运行结果

运行结果如下图所示。


图3.1 原图像


图3.2 sobel算子边缘检测结果


图3.3 robert算子边缘检测结果


图3.4 gauss算子边缘检测结果

机器视觉 边缘检测算子相关推荐

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

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

  2. 机器视觉边缘检测算法详解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 边缘检测相关算法的步骤如下: 1.滤波: 边缘检测算法主要是基于图 ...

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

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

  4. 图像处理常用边缘检测算子总结

    不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像.需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界 ...

  5. 图像处理常用边缘检测算子

    图像处理常用边缘检测算子 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像.需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场 ...

  6. Halcon —— 边缘检测算子详解

    一.算子介绍 1.1 种类 halcon内常用的边缘检测算子包括如下几种: 1.edges_image: 提取2D 图像边缘 2.edges_sub_pix:提取2D图像亚像素边缘 3.edges_o ...

  7. opencv 不同边缘检测算子效果比较

    # -*- coding: utf-8 -*- import cv2 as cv import numpy as np import matplotlib.pyplot as plt#读取图像 img ...

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

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

  9. 几种边缘检测算子的比较Roberts,Sobel,Prewitt,LOG,Canny

    from:https://blog.csdn.net/gdut2015go/article/details/46779251 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中 ...

最新文章

  1. struts-dojo的使用
  2. LeetCode 1819. 序列中不同最大公约数的数目
  3. 开启Windows文件共享必须开启的两个服务
  4. 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(三)SVD...
  5. 阿里云java面试_20个高级Java面试题汇总
  6. Luogu4897 【模板】最小割树
  7. Linux sort命令浅析
  8. java rt.jar的源代码的位置
  9. 在Vmware中安装archlinux(2008.3core)的流程与心得
  10. Maven经验分享(一)安装部署
  11. 和利时HOLLYSYS MACS-K系列DCS介绍
  12. 程序猿都应学习的语言:看25张图学UML
  13. css3箭头水平淡入淡出
  14. 解密weblogic控制台账号密码
  15. cdc有哪些rapper_获谢帝推荐,合作Higher Brothers,CDC的rapper里竟还藏着这样一位狠角色...
  16. 剖析Unreal Engine超真实人类的渲染技术Part 3 - 毛发渲染及其它
  17. 打开cad图纸计算机打不开,电脑上CAD软件为何打不开?打开电脑CAD软件方法!
  18. Win10服务器配置环境变量 | import _ssl # if we can‘t import it, let the error propagate ImportError: DLL load
  19. 【STM32】7—通用定时器 时钟树学习
  20. 会议平板安卓系统下不能使用视频会议功能?要选配摄像头麦克风?

热门文章

  1. 如今,我们已经长大,
  2. IDEA常用快捷键(Windows)
  3. LDA: 从头到尾彻底理解LDA (Latent Dirichlet Allocation)
  4. python入门小项目-判断闰年的两种方法(含代码示例)
  5. 鸿蒙电脑系统运行exe,鸿蒙传说电脑版_电脑版鸿蒙传说下载「含模拟器」-华军软件园...
  6. 【云原生】K8s简介之什么是K8s
  7. MySQL之分库分表
  8. 搜索引擎免费登录入口
  9. android 集成高德地图打包后报 key-location Error, ErrCode:7 的问题
  10. 扩增子测序 查找引物是否去除