OpenCV学习笔记13-图像梯度
来源:互联网 发布:小米打开数据无法上网 编辑:程序博客网 时间:2024/06/06 00:34
OpenCV 提供了三种高通滤波器:Sobel, Scharr, Laplacian
import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('2.png', 0)#cv2.CV_64F为输出图像的深度(数据类型)。#可使用-1,表示与原图像保持一致(np.uint8),但容易丢失边界!laplacian = cv2.Laplacian(img, cv2.CV_64F)sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=5) #只在x方向求导,卷积核5*5sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=5) #只在y方向求导,卷积核5*5canny = cv2.Canny(img, 100, 200)plt.subplot(3,2,1), plt.imshow(img, cmap='gray'), plt.title('Original')plt.xticks([]), plt.yticks([])plt.subplot(3,2,2), plt.imshow(laplacian, cmap='gray'), plt.title('laplacian')plt.xticks([]), plt.yticks([])plt.subplot(3,2,3), plt.imshow(sobel_x, cmap='gray'), plt.title('sobel_x')plt.xticks([]), plt.yticks([])plt.subplot(3,2,4), plt.imshow(sobel_y, cmap='gray'), plt.title('sobel_y')plt.xticks([]), plt.yticks([])plt.subplot(3,2,5), plt.imshow(canny, cmap='gray'), plt.title('canny')plt.xticks([]), plt.yticks([])plt.show()
特别提醒:
输出图像的深度(数据类型)可以设置为-1,从而与原图像保持一致。但我们为什么使用cv2.CV_64F呢?
想象一个从黑到白的边界的导数是整数,而一个从白到黑的边界点导数却是负数。如果原图像的深度的数据类型是np.int8 时,所有的负值都会被截断变成 0,换句话说就是把把边界丢失掉。
所以如果这两种边界你都想检测到,最好的的办法就是将输出的深度的数据类型设置的更高,比如 cv2.CV_16S, cv2.CV_64F 等。取绝对值然后再把它转回到 cv2.CV_8U。
阅读全文
0 0
- OpenCV学习笔记13-图像梯度
- OpenCV 图像平均梯度
- opencv 图像梯度
- Python+OpenCV学习(4)---图像梯度及边缘检测
- Python-OpenCV图像梯度算子
- opencv python 6 图像梯度
- Opencv学习笔记-显示图像
- OpenCV学习笔记-显示图像
- OpenCV学习笔记-图像金字塔
- OpenCV学习笔记-图像分割
- OpenCV学习笔记-图像分割
- OpenCV学习笔记-图像金字塔
- OpenCV学习笔记-图像金字塔
- OpenCV学习笔记-图像金字塔
- openCV学习笔记-- 图像剪切
- 【opencv学习笔记】显示图像
- opencv学习笔记---图像直方图
- opencv学习笔记--图像金字塔
- 分布式定时任务调度系统 Saturn 安装部署
- 虚拟机安装过程中出现“长模式”不兼容的错误的解决办法
- mybatis中写sql,使用in()遇到的问题
- Stars----树状数组
- echarts-2.2.7柱状颜色渐变
- OpenCV学习笔记13-图像梯度
- PHP学习
- 2017杭电多校06Rikka with Graph
- html-webpack-plugin 中文api
- laravel操作数据库报错--基础
- 360极速浏览器中的极速模式下,报错:forEach is not a function
- 获取本周、本季度、本月、上月的开端日期、停止日期 当前日期
- Centos7 设置静态IP
- 3.1AP_HAL(APM的硬件抽象层)