当前位置: 首页 > news >正文

OpenCV函数及其应用

1. 梯度处理的Sobel算子函数


功能


Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导,用于计算图像亮度的空间梯度。

参数


src:输入图像。
dst:输出图像。
ddepth:输出图像的深度。
dx:计算x方向梯度。
dy:计算y方向梯度。
ksize:Sobel内核的大小。


返回值


函数不返回值,但会修改dst参数。

import cv2
import numpy as npimg = cv2.imread('./shudu.png')# 使用sobel算子
img_sobel = cv2.Sobel(img,-1,0,1,ksize=3)        #垂直梯度
img_sobel_2 = cv2.Sobel(img,-1,1,0,ksize=3)        #水平梯度cv2.imshow("img",img)
cv2.imshow('img_sobel',img_sobel)
cv2.imshow('img_sobel_2',img_sobel_2)
cv2.waitKey(0)

 2. 梯度处理Laplacian算子函数      

功能
Laplacian算子是一种二阶导数算子,用于检测图像中的区域的二阶导数,常用于边缘检测。

参数
src:输入图像。
dst:输出图像。
ddepth:输出图像的深度。
ksize:Laplacian内核的大小。
返回值
无。

应用
Laplacian算子适用于需要检测图像中区域的快速变化,如边缘和角点。

import cv2
import numpy as npimg=cv2.imread('./3.png')img_l=cv2.Laplacian(img,-1,ksize=3)cv2.imshow('img1',img_l)
cv2.waitKey(0)

3. Canny算子函数


功能
Canny算子是一种多级边缘检测算子,它通过高斯滤波、梯度计算、非极大值抑制和滞后阈值处理来检测图像中的边缘。

参数
image:输入图像。
edges:输出边缘图像。
threshold1:第一阈值。
threshold2:第二阈值。
返回值
无。

import cv2
img=cv2.imread('./5.png')img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)_,img_b=cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#进行高斯滤波
img_blur=cv2.GaussianBlur(img_b,(3,3),3)#边缘检测
img_canny=cv2.Canny(img_gray,50,150)contours, hierarchy = cv2.findContours(img_canny, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)cv2.drawContours(img, contours, -1, (0, 0, 255), 2)cv2.imshow('img',img)
cv2.imshow('img_canny',img_canny)cv2.waitKey(0)

4. findContours函数


功能
findContours函数用于在二值图像中查找轮廓。

参数
image:输入的二值图像。
contours:检测到的轮廓。
hierarchy:轮廓的层次结构。
返回值
轮廓的数量。

5. drawContours函数


功能
drawContours函数用于在图像上绘制轮廓。

参数
image:输入图像。
contours:要绘制的轮廓。
contourIdx:要绘制的轮廓索引。
color:轮廓的颜色。
返回值
会直接在输入的图像上进行绘制。

一般建议复制原图,在复制后的图片上绘制,方便和原图进行对比。

import cv2
img=cv2.imread('5.png')img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#二值化
_,img_b=cv2.threshold(img_gray,120,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#寻找轮廓
contours,hierarchy=cv2.findContours(img_b,cv2.RETR_LIST,#查询轮廓的方式cv2.CHAIN_APPROX_SIMPLE # 保存轮廓点坐标的方式)
# 绘制轮廓
img_copy=img.copy()
img_draw=cv2.drawContours(img_copy,     #要绘制轮廓的图像contours,     # 轮廓的顶点-1,             # 轮廓列表的索引值(0,0,255),   #3           #)cv2.imshow('img',img)
cv2.imshow('img_d',img_draw)cv2.waitKey(0)


http://www.mrgr.cn/news/80377.html

相关文章:

  • 深入探索:Unicode 与 UTF-8 的奥秘
  • 快速搭建K8s高可用集群实战攻略
  • LabVIEW在国家项目中的应用与开发要求
  • 集成方案 | Docusign + 泛微,实现全流程电子化签署!
  • 解决node.js的req.body为空的问题
  • Vulhub:Fastjson[漏洞复现]
  • dev类似于excel的数据编辑
  • Next.js流量教程:核心 Web Vitals的改善
  • ARM Cortex-A7 MPCore 架构
  • XML基础学习
  • 【时间序列分析】皮尔森相关系数理论基础及python代码实现
  • Spring Framework 路径遍历漏洞复现(CVE-2024-38819)
  • Redis篇-21--运维篇3-集群(分片,水平扩展,高可用,集群配置案例,扩展哨兵案例)
  • .Net WebAPI(一)
  • 【网络安全】Web Timing 和竞争条件攻击:揭开隐藏的攻击面
  • Vulhub:Redis[漏洞复现]
  • 交通道路上的车辆,人,自行车摩托车自动识别数据集,使用YOLO,COCO,VOC格式对2998张原始图片标注
  • 51c视觉~YOLO~合集6~
  • C/C++包含头文件的两种方式:尖括号方式 (<>)和双引号方式 (““)的区别
  • ubuntu服务器木马类挖矿程序排查、及安全管理总结
  • 【CSS in Depth 2 精译_079】第 13 章:渐变、阴影与混合模式概述 + 13.1:CSS 渐变效果(上)——使用多个颜色节点
  • 深度学习——激活函数、损失函数、优化器
  • 简单了解一下 Go 语言的构建约束?
  • F-Cooper论文精读
  • Apache Kylin最简单的解析、了解
  • 基于区块链技术的新能源管理平台