简介:
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效,由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。本文主要介绍Python 中使用cv2(Opencv) 中Canny边缘检测 和 傅里叶变换及示例代码。

1、Canny边缘检测
Canny 边缘检测是一种从不同视觉对象中提取有用结构信息并显着减少要处理的数据量的技术。它已广泛应用于各种计算机视觉系统。 Canny 发现,在不同的视觉系统上应用边缘检测的要求是比较相似的。可以在各种情况下实施满足这些要求的边缘检测解决方案。边缘检测的一般标准包括:以低错误率检测边缘,这意味着检测应准确捕捉图像中显示的尽可能多的边缘。从操作员处检测到的边缘点应准确定位在边缘的中心。图像中的给定边缘应仅标记一次,并且在可能的情况下,图像噪声不应产生错误边缘。步骤如下:

1)使用高斯滤波器,以平滑图像,滤除噪声。

2)计算图像中每个像素点的梯度强度和方向。

3)应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。

4)应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。

5)通过抑制孤立的弱边缘最终完成边缘检测。

edges = cv2.Canny( image, threshold1, threshold2[, apertureSize[, L2gradient]])

参数如下,

参数 说明
image 8 位输入图像。
threshold1 处理过程中的第一个阈值。
threshold2 处理过程中的第二个阈值。
apertureSize Sobel 算子的孔径大小。
L2gradient 为计算图像梯度幅度(gradient magnitude)的标识。其默认值为 False。如果为 True,则使用更精确的 L2 范数进行计算(即两个方向的导数的平方和再开方),否则使用 L1 范数(直接将两个方向导数的绝对值相加)。

代码如下,

import cv2
img=cv2.imread("cjavapy.jpg",cv2.IMREAD_GRAYSCALE)
r1=cv2.Canny(img,128,200)
r2=cv2.Canny(img,32,128)
cv2.imshow("original",o)
cv2.imshow("result1",r1)
cv2.imshow("result2",r2)
cv2.waitKey()
cv2.destroyAllWindows()

2、傅里叶变换
一段信号可以由若干频率不同的正弦信号叠加构成,DFT将将信号从时域变换到频域。在图像处理过程中,傅里叶变换就是将图像分解为正弦分量和余弦分量两部分,即将图像从空间域转换到频域。

代码如下,

import cv2
import numpy as np
from matplotlib import pyplot as plt# 读图
img = cv2.resize(cv2.imread('cjavapy.png', 0), (400, 400))# 傅里叶变换
img_fft = np.fft.fft2(img)
img_fft_shift = np.fft.fftshift(img_fft)
img_fft_shift_ = 20 * np.log(np.abs(img_fft_shift))# 频域滤波
img_fft_shift_process = img_fft_shift[:]
print(img_fft_shift_process.shape)
h, w = img_fft_shift_process.shape[:2]
ch, cw = h // 2, w // 2
img_fft_shift_process[ch - 50:ch + 50, cw - 50:cw + 50] = -10.  # 高通滤波
img_fft_shift_process_ = 20 * np.log(np.abs(img_fft_shift_process))# 傅里叶逆变换
img_fft_ishift = np.fft.ifftshift(img_fft_shift_process)
img_ifft = np.fft.ifft2(img_fft_ishift)
img_ifft_ = np.abs(img_ifft)# 显示
plt.subplot(2, 2, 1)
plt.imshow(img, cmap='gray')plt.subplot(2, 2, 2)
plt.imshow(img_fft_shift_, cmap='gray')plt.subplot(2, 2, 3)
plt.imshow(img_fft_shift_process_, cmap='gray')plt.subplot(2, 2, 4)
plt.imshow(img_ifft_, cmap='gray')plt.show()
plt.close()

了解更多分析及数据抓取可查看:
http://data.yisurvey.com:8989/
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。

Python cv2(Opencv) Canny边缘检测 和 傅里叶变换相关推荐

  1. OpenCV Canny边缘检测的实例(附完整代码)

    OpenCV Canny边缘检测的实例 OpenCV Canny边缘检测的实例 OpenCV Canny边缘检测的实例 #include "opencv2/core/utility.hpp& ...

  2. Python OpenCV -- Canny 边缘检测 (十一)

    Canny 边缘检测 原理 Canny 边缘检测算法 是 John F. Canny 于 1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的 最优算法, 最优边缘检测的三个主要评价标 ...

  3. python+opencv Canny边缘检测

    Step1:高斯滤波(低通滤波,用高斯滤波器平滑图像) 卷积/卷积核(对应相乘再相加) 原始图片外围加一圈0,为保证新图片与原始图片大小相同 卷积核为3*3,外围补一圈0:卷积核为5*5,外围补两圈0 ...

  4. OpenCV——Canny边缘检测(cv2.Canny())

    Canny边缘检测 Canny 边缘检测是一种使用多级边缘检测算法检测边缘的方法.1986 年,John F. Canny 发 表了著名的论文 A Computational Approach to ...

  5. opencv Canny边缘检测用法

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

  6. OpenCV Canny边缘检测

    Canny算法: 流程: 噪声去除:高斯滤波 计算图像梯度:sobel算子,计算梯度大小和方向 非极大值抑制:利用梯度方向像素来判断当前像素是否为边界点 滞后阈值:设置两个阈值,确定最终的边界 Can ...

  7. (九)OpenCV Canny边缘检测

    1.基础原理 参考自<数字图象处理>第十章 及OpenCV Tutorial Canny Edge Detector 1.1边缘检测概述 边缘检测是根据灰度突变来分割图像的一种常用方法.边 ...

  8. python cv2 opencv 图片旋转

    import cv2 import numpy as npdef opencv_rotate(img, angle):"""图片旋转,默认应该是逆时针转动:param i ...

  9. canny边缘检测 java_OpenCV Canny边缘检测

    本篇文章帮大家学习OpenCV Canny边缘检测,包含了OpenCV Canny边缘检测使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. Canny边缘检测用于检测图像中 ...

最新文章

  1. python sys.argv是什么?
  2. UVALive - 3902 Network
  3. matlab 日期加小时数_MATLAB时间与日期的基本操作
  4. 福利来了!国内TOP3的超级云计算,免费领2000核时计算资源!
  5. python2 dict 乱序_为什么我的python dict变得无序?
  6. MVC UpdateModel的未能更新XXXXX的类型模型
  7. threejs指定对象旋转中心
  8. Java中的自增操作符与中间缓存变量机制
  9. 三菱伺服自动调谐_三菱伺服参数设置调试软件MR Configurator2 Ver 1.70Y
  10. eclipse如何用php,phpeclipse使用详解
  11. PPT开场,吸引人的几点技巧
  12. Maven项目之一号店——注册与登录
  13. 取消Excel里面全部超级链接
  14. 教你win10更新失败怎么解决,win10系统更新失败怎么办
  15. 采购订单和 采购申请 的表
  16. [UnexpectedValueException] Your github oauth token for github.com contains invalid characters
  17. uml各类图--完整全面实例
  18. 《活法》读后感--发paper思想准备
  19. Keras Regressor回归(一)
  20. Oracle孤陋寡闻之wm_concat之巨坑

热门文章

  1. 数据预处理之One-Hot(独热编码)编码
  2. diagram使用(BLOCK DIAGRAM)
  3. usermod 命令使用说明
  4. 嵌入式开发日记(9)——多线程与socket通信
  5. 漫谈autoencoder:降噪自编码器/稀疏自编码器/栈式自编码器(含tensorflow实现)
  6. 自编码器,变分自编码器和生成对抗网络异同
  7. Coursera | Introduction to Data Science in Python(University of Michigan)| Assignment2
  8. 谈谈我的框架设计经验
  9. Java MyShopping管理系统 > 购物结算+管理系统
  10. 概率论及概率图模型基础