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()
复制代码


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

相关文章
|
算法 C++ 计算机视觉
OpenCV-图像像素遍历操作的三种方法对比(程序提速)
OpenCV-图像像素遍历操作的三种方法对比(程序提速)
236 0
|
4月前
|
计算机视觉 索引
OpenCv实时设置摄像头参数/获得摄像头参数值的方法论
这篇文章提供了一个OpenCV的实例教程,展示了如何使用`createTrackbar()`函数实时设置和获取摄像头参数值,如饱和度、Gamma和亮度,并通过回调函数在程序中连续修改这些参数。
|
4月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
4月前
|
存储 计算机视觉
OpenCV 中 CV_8UC1,CV_32FC3,CV_32S等参数的含义
OpenCV 中 CV_8UC1,CV_32FC3,CV_32S等参数的含义
330 3
|
4月前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
337 1
|
4月前
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
733 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
4月前
|
前端开发 计算机视觉
Building wheel for opencv-python (pyproject.toml) ,安装命令增加 --verbose 参数
Building wheel for opencv-python (pyproject.toml) ,安装命令增加 --verbose 参数
247 2
|
5月前
|
机器学习/深度学习 传感器 算法
OpenCV4工业缺陷检测的六种方法
OpenCV4工业缺陷检测的六种方法
|
5月前
|
算法 计算机视觉 索引
python---OpenCv(二),背景分离方法较有意思
python---OpenCv(二),背景分离方法较有意思
|
5月前
|
计算机视觉 Python
opencv 处理图像去噪的几种方法学习
OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例: 均值滤波:使用像素邻域的灰度均值代替该像素的值。
75 0