opencv常见方法参数说明参考

简介: opencv常见方法参数说明参考

图片缩放



# 指定大小
img = cv.resize(img,(600,700),interpolation = cv.INTER_CUBIC)
# 按照比例
img = cv.resize(img,None,fx=0.2, fy=0.2, interpolation = cv.INTER_CUBIC)
复制代码


形态学 morphologyEx



# 卷积核定义
'''
矩形:MORPH_RECT;
交叉形:MORPH_CROSS;
椭圆形:MORPH_ELLIPSE;
'''
rectKernel = cv.getStructuringElement(cv.MORPH_RECT, (24, 24))
'''
    MORPH_ERODE    = 0, //腐蚀 跟erode(腐蚀)函数效果一样
    MORPH_DILATE   = 1, //膨胀 跟dilate(膨胀)函数效果一样
    MORPH_OPEN     = 2, //开操作 先腐蚀后膨胀的 消除噪点
    MORPH_CLOSE    = 3, //闭操作 先膨胀后腐蚀 
    MORPH_GRADIENT = 4, //梯度操作
    MORPH_TOPHAT   = 5, //顶帽(礼帽)操作 用原始图像减去其开运算图像的操作 提取噪点
    MORPH_BLACKHAT = 6, //黑帽操作 闭运算减去原始图像的操作
    MORPH_HITMISS  = 7
'''    
gradX = cv.morphologyEx(gray, cv.MORPH_OPEN, rectKernel)
复制代码


HoughLines



-   img 为输入的图像,Canny提取后的边界数据
-   rho: 线段以像素为单位的距离精度,double类型的,推荐用1.0
-   theta: 线段以弧度为单位的角度精度,推荐用np.pi/180
-   threshold int类型,超过设定阈值才被检测出线段,值越大,基本上意味着检出的线段越长,检出的线段个数越少。根据情况推荐先用200试试
# 直线检测 这里注意如果图像的大小太小的时候是检测不到的 可以采用图像的放大操作
lines = cv.HoughLines(edges,1,np.pi/180,200)
# 画线操作
for line in lines:
    rho,theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    cv.line(img,(x1,y1),(x2,y2),(0,0,255),2)
复制代码


HoughLinesP



# minLineLength:线段以像素为单位的最小长度,根据应用场景设置
# maxLineGap:最大间隔,有默认值0,允许将同一行点与点之间连接起来的最大的距离
lines = cv.HoughLinesP(edges,1,np.pi/180,100,minLineLength=180,maxLineGap=90)
for line in lines:
    x1,y1,x2,y2 = line[0]
    cv.line(img,(x1,y1),(x2,y2),(0,0,255),2)
复制代码


Canny



# 边缘检测
'''
第一个参数是我们的输入图像。
第二个和第三个参数分别是我们的 minVal 和 maxVal。一般情况最大值为最小值的3被
第三个参数是 aperture_size。它是用于查找图像渐变的 Sobel 内核的大小。默认情况下,它是 3.
最后一个参数是 L2gradient,它指定用于查找梯度幅度的等式。如果它是 True,
它使用上面提到的更准确的等式,否则它使用这个函数: $$ Edge_Gradient ; (G) = |G_x| + |G_y| $$ 
默认情况下,它为 False。
'''
当图像的灰度梯度大于 maxVal 时,其为是真的边界.
那些低于 minVal 的边界会被抛弃. 
如果介于两者之间的,就看这个点是否与某个被确定为真正的边界点相连; 如果是就认为它也是边界点;如果不是,就抛弃.
edges = cv.Canny(gradX,50,150,apertureSize = 3)
复制代码


棋盘效果图



import cv2 as cv
import numpy as np
import math
from scipy import misc, ndimage
# xq001.jpg xq002.jpg
input_path = 'E:/opencv4.4.0/age-and-gender-classification/img/xq002.jpg'
img = cv.imread(input_path)
img = cv.resize(img,None,fx=0.2, fy=0.2, interpolation = cv.INTER_CUBIC)
cv.imshow("xq",img)
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
#内核比较大主要是为了去掉边界的干扰
rectKernel = cv.getStructuringElement(cv.MORPH_RECT, (24, 24))
gradX = cv.morphologyEx(gray, cv.MORPH_OPEN, rectKernel)
cv.imshow('gradX2',gradX)
edges = cv.Canny(gradX,50,150,apertureSize = 3)
cv.imshow("edges", edges)
lines = cv.HoughLines(edges,1,np.pi/180,200)
for line in lines:
    rho,theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    cv.line(img,(x1,y1),(x2,y2),(0,0,255),2)
cv.imshow('houghlines3.jpg',img)
k = cv.waitKey(0)
if k == 27:
   cv.destroyAllWindows()
复制代码


网络异常,图片无法展示
|

相关文章
|
10月前
|
算法 C++ 计算机视觉
OpenCV-图像像素遍历操作的三种方法对比(程序提速)
OpenCV-图像像素遍历操作的三种方法对比(程序提速)
177 0
|
1月前
|
机器学习/深度学习 传感器 算法
OpenCV4工业缺陷检测的六种方法
OpenCV4工业缺陷检测的六种方法
|
1月前
|
算法 计算机视觉 索引
python---OpenCv(二),背景分离方法较有意思
python---OpenCv(二),背景分离方法较有意思
|
1月前
|
计算机视觉 Python
opencv 处理图像去噪的几种方法学习
OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例: 均值滤波:使用像素邻域的灰度均值代替该像素的值。
14 0
|
2月前
|
算法 计算机视觉
如何判断点在多边形内部:OpenCV--cv2.pointPolygonTest()方法详解
如何判断点在多边形内部:OpenCV--cv2.pointPolygonTest()方法详解
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
OpenCV读取tensorflow 2.X模型的方法:将SavedModel转为frozen graph
【2月更文挑战第22天】本文介绍基于Python的tensorflow库,将tensorflow与keras训练好的SavedModel格式神经网络模型转换为frozen graph格式,从而可以用OpenCV库在C++等其他语言中将其打开的方法~
119 1
OpenCV读取tensorflow 2.X模型的方法:将SavedModel转为frozen graph
|
3月前
|
机器学习/深度学习 传感器 算法
带你了解OpenCV4工业缺陷检测的六种方法
带你了解OpenCV4工业缺陷检测的六种方法
93 0
|
3月前
|
机器学习/深度学习 传感器 算法
OpenCV4工业缺陷检测的六种方法
OpenCV4工业缺陷检测的六种方法
185 0
|
3月前
|
定位技术 计算机视觉 C++
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
C++计算机视觉库OpenCV在Visual Studio 2022的配置方法
136 1
|
3月前
|
机器学习/深度学习 传感器 算法
【OpenCV4工业缺陷检测的六种方法
【OpenCV4工业缺陷检测的六种方法
125 0