终于到这了,当初为啥会想学OpenCV,就是因为玩树莓派的时候网上找了一个OpenCV摄像头 Canny边缘检测的例子,当时我也不知道具体啥原理,觉得逼格好高…就发了条说说想装个逼,有人评论说出是Canny边缘检测,顿时感觉自己被打脸…今天算是找回场子了吧。
话不多说,上代码,看结果。

import cv2           # 导入库
'''  cv2.imread(filename,flags)
# filename为文件名,图片与.py文件在一个文件夹时输入文件名即可
# 不在一个文件夹时输入图片的路径和名字
# flags为图片的颜色类型,默认为1,灰度图像为0
'''
img = cv2.imread('15.jpg', 0)
'''cv2.blur(src, ksize, dst, anchor, borderType)均值滤波
# 用邻域内像素均值来代替该点像素值,均值滤波在去噪的同时也破坏了图像细节部分
#  src 要滤波的图像   ksize 内核的大小  anchor 锚点,即要平滑的点,默认值(-1, -1),即在核中心
#  ksize(3, 3)表示3 * 3的核大小
# dst 输出图像
# borderType 图像像素边界类型,默认就行
'''
img = cv2.blur(img, (5, 5))
'''cv2.imshow(winname,mat)
# winname为显示的窗口
# mat 需要显示的图像
'''
cv2.imshow('img', img)
'''cv2.Canny(image, threshold1, threshold2, edges, apertureSize, L2gradient)
# src 输入图像 dst 输出边缘图像
# threshold1: 滞后阈值低阈值(用于边缘连接) threshold2: 滞后阈值高阈值(控制边缘初始段)
# 推荐高低阈值比值在2:1到3:1之间
# apertureSize: 表示Sobel算子孔径大小, 默认值3
# L2gradient: 计算图像梯度幅值的标识
'''
img1 = cv2.Canny(img, 30, 100)
'''cv2.imshow(winname,mat)
# winname为显示的窗口
# mat 需要显示的图像
'''
cv2.imshow('img1', img1)
'''cv2.Sobel(src, ddepth, dx, dy, dst, ksize, scale, delta, borderType)
# src 输入图像 dst 输出边缘图像
# ddepth 输出图像的深度 cv2.CV_8U(8位无符号数)、CV_16S(16位无符号数)
# CV_16U(16位有符号数) CV_32F(32位浮点数) CV_64F(64位浮点数)
# 若src.depth() = CV_8U, 取ddepth =-1/CV_16S/CV_32F/CV_64F
# 若src.depth() = CV_16U/CV_16S, 取ddepth =-1/CV_32F/CV_64F
# 若src.depth() = CV_32F, 取ddepth =-1/CV_32F/CV_64F
# 若src.depth() = CV_64F, 取ddepth = -1/CV_64F
# 取-1时, ddepth = src.depth()
# dx X方向上的差分阶数   dy Y方向上的差分阶数   当组合为dx=1,dy=0时求x方向的一阶导数,当组合为dx=0,dy=1时求y方向的一阶导数
# ksize  默认值3, 表示Sobel核大小, 1,3,5,7   scale  计算导数值时的缩放因子, 默认值1, 表示不缩放,效果通常使梯度图更亮
# delta(δ) 表示在结果存入目标图之前可选的delta值, 默认值0  在将目标图像存储进多维数组前,可以将每个像素值增加delta,默认为0
# borderType 决定图像在进行滤波操作(卷积)时边沿像素的处理方式,默认为BORDER_DEFAULT
'''
'''Sobel边缘检测咋检测?
# 先求X方向和Y方向的一阶导数,换句能理解的就是两方向的梯度、图像的深度
# 再将图像深度改为CV_8U,cv2.imshow()默认cv2.CV_8U(8位无符号数)
# absX、absY 图像合成一张图
# Sobel边缘检测完成
'''
dx = cv2.Sobel(img, cv2.CV_16S, 1, 0)
dy = cv2.Sobel(img, cv2.CV_16S, 0, 1)
'''cv2.convertScaleAbs(src[,alpha[,beta]])
# src 输入图像 alpha 比例因子  beta 保存新图像(数组)前可以增加的值
'''
absX = cv2.convertScaleAbs(dx)
absY = cv2.convertScaleAbs(dy)
img2 = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
'''cv2.imshow(winname,mat)
# winname为显示的窗口
# mat 需要显示的图像
'''
cv2.imshow('dx', absX)
cv2.imshow('dy', absY)
cv2.imshow('img2', img2)'''cv2.Laplacian(src, ddepth, dst, ksize, scale, delta, borderType)用来判断图像模糊度的
# src 输入图像 dst 输出边缘图像
# ddepth 图像的深度,-1表示采用的是与原图像相同的深度。目标图像的深度必须大于等于原图像的深度
# ksize  默认值3, 表示Sobel核大小, 1,3,5,7   scale  计算导数值时的缩放因子, 默认值1, 表示不缩放,效果通常使梯度图更亮
# delta(δ) 表示在结果存入目标图之前可选的delta值, 默认值0  在将目标图像存储进多维数组前,可以将每个像素值增加delta,默认为0
# borderType 决定图像在进行滤波操作(卷积)时边沿像素的处理方式,默认为BORDER_DEFAULT
'''
img3 = cv2.Laplacian(img, cv2.CV_16S, ksize=3)
img3 = cv2.convertScaleAbs(img3)
'''cv2.imshow(winname,mat)
# winname为显示的窗口
# mat 需要显示的图像
'''
cv2.imshow('img3', img3)
'''
cv2.waitKey(delay)
#  delay为正数时,延时delay毫秒结束
#  想要用按下某个键时退出可用以下方法:
#  if(cv2.waitKey(0)  == ord('q')):exit(0)
#别的方法也行,不唯一
'''
if cv2.waitKey(0) & 0xFF == 27:exit(0)
'''
cv2.destroyWindow(winname)
#结束窗口,winname为窗口名
cv2.destroyAllWindows()
#结束所有窗口
'''
cv2.destroyAllWindows()

结果如下图。



就先这样,遇到别的再补充。

026-OpenCV边缘检测图片相关推荐

  1. OPENCV打开图片进行边缘检测

    OPENCV打开图片并且进行边缘检测 #ifdef _CH_ #pragma package <opencv> #endif#ifndef _EiC #include "cv.h ...

  2. python怎么换背景颜色_用opencv给图片换背景色的示例代码

    图像平滑 模糊/平滑图片来消除图片噪声 OpenCV函数:cv2.blur(), cv2.GaussianBlur(), cv2.medianBlur(), cv2.bilateralFilter() ...

  3. 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

  4. opencv——边缘检测算法(总结)

    前言 笔记. 一.边缘检测算法 边缘检测算法是指利用灰度值的不连续性质,以灰度突变为基础分割出目标区域.对铝铸件表面进行成像后会产生一些带缺陷的区域,这些区域的灰度值比较低,与背景图像相比在灰度上会有 ...

  5. OpenCV学习-P34-P38 Opencv边缘检测

    OpenCV学习-P34-P37 Opencv边缘检测 Sobel检测算子 Laplacian检测算子 Canny边缘检测算法 边缘检测总结 边缘检测分为两类:基于搜索和基于零穿越 基于搜索:寻找图像 ...

  6. python图片旋转脚本_Python+OpenCV 实现图片无损旋转90°且无黑边

    0. 引言 有如上一张图片,在以往的图像旋转处理中,往往得到如图所示的图片. 然而,在进行一些其他图像处理或者图像展示时,黑边带来了一些不便.本文解决图片旋转后出现黑边的问题,实现了图片尺寸不变的旋转 ...

  7. python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和 ...

  8. python opencv 得到图片路径image_path的宽wide、高heigh和深度deep

    python opencv 得到图片路径image_path的宽wide.高heigh和深度deep 图片路径是:'1.jpg' 下面是具体代码: import cv2 #得到图片路径image_pa ...

  9. opencv去除图片的高光

    opencv去除图片的高光 有明显的修补痕迹 https://blog.csdn.net/qq_43555843/article/details/102510425 参考这个: https://blo ...

  10. DALSA线阵CCD相机开发 之 opencv读取图片

    SDK的下载 Sapera_LT_8.31_SDK 百度网盘下载地址:链接:密码:ckm7. SDK的安装 解压运行.exe文件,按照提示确定,下一步即可. 帮助文档和demo 如果要获得完整的帮助文 ...

最新文章

  1. python简单代码运行_python代码如何运行
  2. activiti 图片
  3. 我的『MVP.Blazor』快速创建与部署
  4. 玩家可以输入辅助指令_最后生还者 第二部辅助功能详解 盲人玩家也能玩
  5. JS_typeof()函数返回类型总结
  6. MySQL--当事务遇到DDL命令
  7. JavaScript模拟终端输出
  8. Java画十字_用Java绘制对角线
  9. 中国互联网发展状况报告:境内约 2.6 万网站被植入后门
  10. pyecharts绘制地铁图_2025年北京市轨道交通线路预绘图(含地铁、有轨电车、市郊铁路)...
  11. Android Launcher启动流程
  12. C语言编写简易图书管理系统
  13. vue美团电影模拟实现
  14. 2013百度之星月度冠军乔明达:小学五年级接触编程
  15. ORA-28547:connection to server failed,probable Oracle net admin errror
  16. 关于c3p0报错:An attempt by a client to checkout a Connection has timed out
  17. iframe属性即使用
  18. π122M30代替Si8621AB-B-IS 低功耗,高能效、抗干扰能力好的 双通道数字隔离器解决方案
  19. 项目实施计划及总体设计报告(范例)
  20. 蓝桥杯专题之并查集篇

热门文章

  1. 改进StyleGANv2的容貌年龄预测系统
  2. MOOC数据结构与算法全套
  3. USB HUB(GL850G)电路
  4. 导出数据库dmp出现EXP-00091: Exporting questionable statistics.问题解决!
  5. dns配置异常怎么修复_DNS错误怎么修复
  6. list取值_深入学习Redis(四),基本类型【List】剖析
  7. 【jpg和png区别】PIL和opencv读取、显示图片+归一化+transpose变换通道
  8. 如何“管理”你的上级领导
  9. 【LittleVGL】仪表guage函数 lv_gauge_set_scale
  10. 计算机视觉与深度学习第二章:图像分类任务