1. AI识别

1.1 YOLO检测(yolov3.detect)

算子名称 yolov3.detect
参数类型 参数名 参数说明
输入参数 string_t model 模型名称
cv::Mat image 待识别图片
int topK 识别框topK排序
bool insideFilter 识别框包含过滤
返回值 YOLOv3_t YOLO识别结果包围盒列表
功能描述 用于从站模式给主站发送数据。
1. 如果是CAN总线等抢占式通道,则立即发送;
1. 如果是485等轮询通道,系统将暂存数据,等候主节点轮询时发送。
  • topK类型消息数据用法:

    1. table = sys.propset_t({
    2. var1 = 1,
    3. var2 = 2.0,
    4. var3 = "str"
    5. })
  • insideFilter

    1. table = sys.propset_t({
    2. var1 = 1,
    3. var2 = 2.0,
    4. var3 = "str"
    5. })
  • YOLOv3_t结构 ```cpp class YOLOv3_t { public: int width; // Width of input image. int height; // Height of input image. BoundingBox_vec bboxes; // All objects, The vector of BoundingBox .

public: bool is_empty(void); };

  1. 脚本示例:
  2. ```lua
  3. detect_img = ("yolo4_pallet", equa_img, 1, false)

1.2 绘制YOLO识别框(yolov3.draw_bbox)

算子名称 yolov3.draw_bbox
参数类型 参数名 参数说明
输入参数 cv::Mat image 图片
YOLOv3_in imgdet YOLO识别结果包围盒列表
bool drawScore 识别分数
返回值 cv::Mat 已绘制边框图片
功能描述 用于绘制识别框并识别分数。

脚本示例:

  1. image = equa_img --均衡化处理结果图
  2. imgdet = detect_img --YOLO识别结果
  3. drawScore = true
  4. bbox_draw = yolov3.draw_bbox(image, imgdet, drawScore)

1.3 拣选YOLO识别框(yolov3.pick_bbox)

算子名称 yolov3.pick_bbox
参数类型 参数名 参数说明
输入参数 YOLOv3_in imgdet YOLO识别结果包围盒列表
string_t label 识别框拣选列表
返回值 BoudingBox_ptr 识别框所选范围
功能描述 用于拣选识别框所选范围。

脚本示例:

  1. imgdet = detect_img
  2. label = "all"
  3. bbox_pick = (imgdet, label)

1.4 识别框分类(yolov3.sort_bbox)

算子名称 yolov3.sort_bbox
参数类型 参数名 参数说明
输入参数 YOLOv3_in imgdet YOLO识别结果
返回值 string_t 识别框分类结果
功能描述 将YOLO识别结果进行分类

脚本示例:

  1. text = yolov3.sort_bbox(bbox_draw, detect.bboxes)

2. 匹配

2.1 模板匹配(cv.match_template)

算子名称 cv.match_template
参数类型 参数名 参数说明
输入参数 cv::Mat src 待搜索图像
cv::Mat obj 模板图像
vector& Rect 匹配结果
int type 模板类别
int num 模板序号
返回值 cv::Vec 匹配结果
功能描述 对比图像像素值进行匹配

2.2 特征匹配(cv.match_flann)

算子名称 cv.match_flann
参数类型 参数名 参数说明
输入参数 cv::Mat src 待搜索图像
cv::Mat obj 模板图像
bool drawBox 绘制特征边框
返回值 cv::Mat 特征匹配结果
功能描述 记录目标图像与待匹配图像的特征点

2.3 形状匹配(cv.match_shapes)

算子名称 cv.match_shapes
参数类型 参数名 参数说明
输入参数 cv::Mat src 待搜索图像
cv::Mat obj 匹配图像
返回值 cv::Mat 形状匹配结果
功能描述 通过轮廓计算进行形状匹配

3. OpenCV基础函数

3.1 版本号(cv.version)

算子名称 cv.version
参数类型 参数名 参数说明
返回值 void
格式化
功能描述 创建新版本

3.2 定义文件名(cv.filename)

算子名称 cv.filename
参数类型 参数名 参数说明
输入参数 string_t filePath 文件路径
功能描述 定义文件名

3.3 文件目录(cv.imlist)

算子名称 cv.imlist
参数类型 参数名 参数说明
输入参数 string_t dirname 地址名
功能描述 文件目录

3.4 读取文件(cv.imread)

算子名称 cv.imread
参数类型 参数名 参数说明
输入参数 string_t filename 文件路径
bool color 颜色
返回值 cv::Mat 图片
功能描述 读取文件

脚本示例:

  1. image = cv.read("images/20210707_140546755_NG.jpeg", false)

3.5 保存图像(cv.imwrite)

算子名称 cv.imwrite
参数类型 参数名 参数说明
输入参数 string_t filename 文件名

cv::Mat image 图片
功能描述 保存文件

脚本示例:

  1. cv.imwrite("imgout/test.jpg", image)

3.6 创建可变形矩形(cv.Rect2f)

算子名称 cv.imrect
参数类型 参数名 参数说明
输入参数 float x x坐标
float y y坐标
float w 宽度
float h 高度
返回值 cv::Mat
图片
功能描述 创建可变形矩形

脚本示例:

  1. x = 0.15
  2. y = 0.0
  3. w = 0.03
  4. h = 1.0
  5. lrect = cv.Rect2f(image, x, y, z, w)

3.7 显示图像(cv.imshow)

算子名称 cv.imshow
参数类型 参数名 参数说明
输入参数 string_t winname 显示名

cv::Mat image 图片
功能描述 显示图像

脚本示例:

  1. cv.imshow("equa_img", equa_img)

3.8 读取矩形(cv.imrect)

算子名称 cv.imrect
参数类型 参数名 参数说明
输入参数 cv::Mat image 输入图像
cv::Rect rect 输入矩形
返回值 cv::Mat 矩形区域
功能描述 读取矩形区域图像

脚本示例:

  1. dlrect = cv.imrect(image, lrect)

4.OpenCV查找与绘制

4.1 轮廓查找(cv.find_contours)

算子名称 cv.find_contours
参数类型 参数名 参数说明
输入参数 cv::Mat img 图片
int thresh 阈值
int block 指定区块大小
bool inv 是否包围
int mode 轮廓类型
返回值 contours 待绘制轮廓
功能描述 查找图片中的轮廓

轮廓类型介绍:

mode 参数值 含义
CV_RETR_EXTERNAL 0 只检测出最外轮廓,即c0
CV_RETR_LIST 1 检测出所有的轮廓并将它们保存早表(list)中
CV_RETR_CCOMP 2 检测出所有的轮廓并将它们组织成双层的结构
第一层是外部轮廓边界
第二层边界是孔的边界
CV_RETR_TREE 3 检测出所有轮廓并且重新建立网状的轮廓结构

脚本示例:

  1. img = image
  2. thresh = -2
  3. block = 10
  4. inv = true
  5. mode = 1
  6. contours = cv.find_contours(img, thresh, block, inv, mode)

4.2 绘制轮廓(cv.draw_contours)

算子名称 cv.draw_contours
参数类型 参数名 参数说明
输入参数 cv::Mat img 图片
contours cnts 要绘制的轮廓
bool drawBG 轮廓背景
int maxlevel 绘制轮廓层次深度
返回值 cv::Mat 已绘制轮廓图
功能描述 绘制出制定轮廓

脚本示例:

  1. img = image
  2. cnts = contours --轮廓识别结果
  3. drawBG = true
  4. maxlevel = -1
  5. contours_draw = cv.draw_contours(image, contours, true, -1)

4.3 绘制矩形(cv.draw_rectangle)

算子名称 cv.draw_rectangle
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图片
cv::Rect rect 输入矩形
int thickness 矩形线条粗细程度
>=1 绘制线宽
-1 填充矩形
float alpha 背景图像透明度,范围:0.0~1.0
float beta 绘制矩形透明度,范围:0.0~1.0
返回值 cv::Mat dst 已绘制矩形图片
功能描述 绘制指定参数的矩形

脚本示例:

  1. src = cv.Mat() -- 前一步骤得到的原图像
  2. rect = cv.Rect2f() -- 要绘制的矩形框
  3. thickness = -1
  4. alpha = 1.0 -- 背景图像透明度
  5. beta = 0.8 -- 矩形透明度
  6. dst = cv.draw_rectangle(src, rect, thickness, alpha, beta)

4.4 绘制线条(cv.draw_lines)

算子名称 cv.draw_lines
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Lines lines 输入线变化
返回值 cv::Mat 霍夫线变换后的图像
功能描述 绘制霍夫线变换的线条图像

脚本示例:

  1. src = lrect --矩形读取得到的图像
  2. lines = llines --霍夫线变换得到的图像
  3. lning = cv.draw_lines(src, lines)

4.5 轮廓外接最小闭合圆查找(cv.minEnclosingCircle)

算子名称 cv.minEnclosingCircle
参数类型 参数名 参数说明
输入参数 contours contour 已绘制的轮廓
返回值 cv::Point2f 圆心坐标
float 圆的半径
功能描述 根据输入轮廓,查找轮廓最小外接圆,返回圆心与半径(该函数并非直接绘制圆形)

脚本示例:

  1. cir_center, cir_radius = cv.minEnclosingCircle(contour)

4.6 绘制文本(cv.putText)

算子名称 cv.putText
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
string_t text 输入文本
int x 文本框位置(左下角点横坐标)
int y 文本框位置(左下角点纵坐标)
返回值 cv::Mat 绘制文本后图片
功能描述 在输入图像中,绘制文本信息,并制定位置

脚本示例:

  1. text_img = cv.putText(img, text, 1400, 1700)

4.7 绘制轮廓凸包(cv.convexHull)

算子名称 cv.convexHull
参数类型 参数名 参数说明
输入参数 contours contour 已查找出的轮廓
返回值 contours 轮廓凸包
功能描述 获得轮廓的凸包

脚本示例:

  1. hull_img = cv.convexHull(contour)

4.8 多边形逼近(cv.approxPolyDP)

算子名称 cv.approxPolyDP
参数类型 参数名 参数说明
输入参数 contours contour 已查找出的轮廓
double epsilon 逼近准确度,允许原多边形与拟合结果之间存在的最大偏差
返回值 contours 近似曲线
功能描述 把一个连续光滑曲线折线化

脚本示例:

  1. img_cots = cv.approxPolyDP(img_cots, 100)

4.9 凸缺陷查找(cv.convexityDefects)

算子名称 cv.approxPolyDP
参数类型 参数名 参数说明
输入参数 contours contour 已查找出的轮廓
contours convexhull 轮廓凸包
返回值 defects 凸缺陷检测信息
功能描述 查找出轮廓凸包的凸缺陷

脚本示例:

  1. hull_def = cv.convexityDefects(contour, convexhull)

4.10 拟合椭圆(cv.fit_ellipse)

算子名称 cv.fit_ellipse
参数类型 参数名 参数说明
输入参数 contours contour 已查找出的轮廓
返回值 cv::RotatedRect 拟合椭圆(椭圆为可旋转矩形类)
功能描述 根据输入轮廓,拟合椭圆

脚本示例:

  1. rect = cv.fit_ellipse(contour)

4.11 绘制椭圆(cv.draw_ellipse)

算子名称 cv.draw_ellipse
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::RotatedRect rRect 已识别椭圆
bool filledMask 填充
返回值 cv::Mat 已绘制椭圆图片
功能描述 绘制出已识别椭圆

脚本示例:

  1. mellipse = cv.draw_ellipse(image, marcRect, false)

4.12 绘制圆(cv.draw_circle)

算子名称 cv.draw_circle
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Point2f center 输入圆心
float radius 输入半径
返回值 cv::Mat 已绘制圆图片
功能描述 根据圆心半径绘制出圆

脚本示例:

  1. draw_circle = cv.draw_circle(cotimage, cir_center, cir_radius)

4.13 绘制缺陷(cv.draw_defects)

算子名称 cv.draw_defects
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
contours contour 已识别轮廓
defects defects 以识别缺陷
bool filledMask 填充
返回值 cv::Mat 以绘制缺陷图片
功能描述 将缺陷绘制在图片上

脚本示例:

  1. defs = cv.draw_defects(cotimage, contour, hull_def, false)

5. 直方图操作

5.1 二值化处理(cv.threshold)

算子名称 cv.threshold
参数类型 参数名 参数说明
输入参数 cv::Mat img 图片
int thresh 阈值的具体值
int block 像素领域块
bool inv 大于阈值为1,小于阈值为0
返回值 cv::Mat 处理后图像
功能描述 根据阈值将像素值进行二值化,放大像素差
  1. img = image
  2. thresh = 10
  3. block = 10
  4. inv = false
  5. thre_img = cv.threshold(img, thresh, block, inv)

5.2 归一化处理(cv.normalize)

算子名称 cv.normalize
参数类型 参数名 参数说明
输入参数 cv::Mat img 图片
double maxVal 数组最大值
double minVal 数组最小值
int normType 归一化类型
返回值 cv::Mat 处理后图像
功能描述 将不同范围的值,映射到固定的相同范围内

归一化类型介绍:

normType类型 参数值 含义
cv::NORM_L1 1 归一化数组的L1范数(绝对值的和)
cv::NORM_L2 2 归一化数组的L2范数(欧几里德)
cv::NORM_INF 3 归一化数组的最大值
cv::NORM_MINMAX 4 数组的数字被平移或缩放到一个指定的范围
描述:L1用的是绝对值即曼哈顿距离,L2用的是平方即欧几里德距离,MINMAX就是映射到a, b区间内。

脚本示例:

  1. img = image
  2. maxVal = 255
  3. minVal = 0
  4. normType = 4
  5. norm_img = cv.normalize(image, maxVal, minVal, norType)

5.3 均衡化处理(cv.equalize)

算子名称 cv.equalize
参数类型 参数名 参数说明
输入参数 cv::Mat img 图片
返回值 cv::Mat 处理后图像
功能描述 增加像素灰度值的动态范围,增强对比度

脚本实例:

  1. img = image
  2. equa_img = cv.equalize(img)

5.4 自适应阈值操作(cv.threshold_adaptive)

算子名称 cv.threshold_adaptive
参数类型 参数名 参数说明
输入参数 cv::Mat img 图片
int block 像素领域块
bool inv 大于阈值为1,小于阈值为0
返回值 cv::Mat 处理后图像
功能描述 增加像素灰度值的动态范围,增强对比度

脚本实例:

  1. img = image
  2. block = 10
  3. inv = true
  4. adth_img = cv.threshold_adaptive(img, block, inv)

5.5 自适应阈值操作(cv.threshold_integral)

算子名称 cv.threshold_adaptive
参数类型 参数名 参数说明
输入参数 cv::Mat img 图片
int block 像素领域块
bool inv 大于阈值为1,小于阈值为0
返回值 cv::Mat 处理后图像
功能描述 增加像素灰度值的动态范围,增强对比度

脚本实例:

  1. img = image
  2. block = 10
  3. inv = true
  4. adth_img = cv.threshold_adaptive(img, block, inv)

6.过滤

6.1 高斯滤波器(cv.GaussianBlur)

算子名称 cv.GaussianBlur
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Size ksize 卷积核大小
返回值 cv::Mat 高斯模糊图像
功能描述 对图像进行高斯模糊处理,消除高斯噪音干扰

脚本示例:

  1. src = image
  2. ksize = cv.Size2i(5,5)
  3. gaus_img = cv.GaussianBlur(image, ksize)

6.2 索贝尔滤波器(cv.Sobel)

算子名称 cv.Sobel
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
int ddepth 输出像素深度
int ksize 卷积核大小
double scale 缩放比例常数,默认1
double delta 可选的增量,将会加到输出图像中
int borderType 边界模式,默认BORDER_DEFAULT
返回值 cv::Mat 梯度计算后图像
功能描述 消除噪音对图像的影响

脚本实例:

  1. src = image
  2. ddepth = CV_64F
  3. ksize = 3
  4. scale = 1
  5. delta = 0
  6. border = BORDER_DEFAULT
  7. sobel_img = cv.Sobel(src, ddepth, ksize, scale, delta, border)

6.3 Scharr滤波器(cv.Scharr)

算子名称 cv.Scharr
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
int ddepth 输出像素深度
int ksize 卷积核大小
double scale 缩放比例常数,默认1
double delta 可选的增量,将会加到输出图像中
int borderType 边界模式,默认BORDER_DEFAULT
返回值 cv::Mat 过滤处理图像
功能描述 与cv.Sobel功能相同,但精度更高

脚本示例:

  1. src = image
  2. ddepth = CV_64F
  3. ksize = 3
  4. scale = 1
  5. delta = 0
  6. border = BORDER_DEFAULT
  7. scharr_img = cv.scharr(src, ddepth, ksize, scale, delta, border)

6.4 拉普拉斯滤波器(cv.Laplacian)

算子名称 cv.Laplacian
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
int ddepth 输出像素深度
int ksize 卷积核大小
double scale 缩放比例常数,默认1
double delta 可选的增量,将会加到输出图像中
int borderType 边界模式,默认BORDER_DEFAULT
返回值 cv::Mat 变换后图像
功能描述 增强图像中灰度突变的区域,减弱灰度的缓慢变化区域

脚本示例:

  1. src = image
  2. ddepth = CV_64F
  3. ksize = 3
  4. scale = 1
  5. delta = 0
  6. border = BORDER_DEFAULT
  7. lapl_img = cv.Laplacian(src, ddepth, ksize, scale, delta, border)

6.5 简单模糊(cv.blur)

算子名称 cv.blur
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Size ksize 卷积核大小
返回值 cv::Mat 模糊图像
功能描述 实现简单模糊

脚本示例:

  1. src = image
  2. ksize = cv.Size2i(5,5)
  3. blur_img = cv.blur(image, ksize)

7.边缘检测

7.1 霍夫变换(cv.HoughLines)

算子名称 cv.HoughLines
参数类型 参数名 参数说明
输入参数 cv::Mat image 输入图像
double rho 设置直线像素分辨率
double theta 设置直线弧度分辨率
int threshold 阈值
double srn 细化直线计算结果,默认0
double stn 细化直线计算结果,默认0
返回值 cv::Mat 图像霍夫变换后的线
功能描述 通过霍夫变换,在图中找出大量的线

脚本示例:

  1. imgage = sobel_img --索贝尔导数计算结果图像
  2. rho = 1
  3. theta = CV_PI / 180
  4. threshold = 300
  5. srn = 0
  6. stn = 0
  7. hough_img = cv.HoughLines(image, rho, theta, threshold, srn, stn)

7.2 获取矩形边界(cv.boundingRect)

算子名称 cv.boudingRect
参数类型 参数名 参数说明
输入参数 cv::Mat image 输入图像
cv::Lines lines 线
float rho 直线距离坐标原点的距离
float theta 直线过坐标原点垂线与x轴夹角
double a 夹角的余弦值
double b 夹角的正弦值
double x0 直线与过坐标原点的垂线的交点
double y0 直线与过坐标原点的垂线的交点
double length 图像高宽的最大值
返回值 cv::Mat 矩形边界图像
功能描述 得到包覆此轮廓的最小正矩形

脚本示例:

  1. image = sobel_img
  2. lines = hough_img
  3. rho = lines[i][0]
  4. theta = lines[i][1]
  5. a = cos(theta)
  6. b = sin(theta)
  7. x0 = a*rho
  8. y0 = b*rho
  9. length = max(sobel_img.rows, sobel_img.cols)
  10. bound_img = cv.boudingRect(image, lines, rho, theta, a, b, x0, y0, length)

7.3 边缘检测(cv.Canny)

算子名称 cv.Canny
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
double threshold1 下限阈值
double threshold2 上限阈值
返回值 cv::Mat 边缘图像
功能描述 将单个的边缘候选像素加入轮廓

脚本示例:

  1. src = gaus_img
  2. threshold1 = 5
  3. threshold2 = 30
  4. canny_img = cv.Canny(src, thrshold1, threshold2)

简介:介于上限阈值和下限阈值之间的像素点,被设置为弱边缘。进一步判断,如果其领域内有强边缘像素,则 保留,如果没有,则剔除。

8.形态学处理

8.1 膨胀(cv.dilate)

算子名称 cv.dilate
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Mat dst 结果图像
cv::Point anchor 锚点的位置
int iterations 迭代次数
int borderType 边界模式
cv::Scalar borderValue 边缘值
返回值 cv::Mat 膨胀图像
功能描述 将图像进行膨胀处理,主要作用于连通分支

脚本示例:

  1. src = thre_img --二值化结果图像
  2. dst = dilate_img
  3. anchor = point(-1, -1)
  4. iterations = 2
  5. borderType = BORDER_CONSTANT
  6. borderValue = morphologyDefaultBorderValue()
  7. dilate_img = cv.dilate(src, dst, anchor, iterations, borderType, borderValue)

8.2 腐蚀(cv.erode)

算子名称 cv.erode
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Mat dst 结果图像
cv::Point anchor 锚点的位置
int iterations 迭代次数
int borderType 边界模式
cv::Scalar borderValue 边缘值
返回值 cv::Mat 腐蚀图像
功能描述 将图像进行腐蚀处理,主要作用于消除图像中斑点一样的噪声

脚本示例:

  1. src = dilate_img --膨胀结果图像
  2. dst = erode_img
  3. anchor = point(-1, -1)
  4. iterations = 2
  5. borderType = BORDER_CONSTANT
  6. borderValue = morphologyDefaultBorderValue()
  7. erode_img = cv.erode(src, dst, anchor, iterations, borderType, borderValue)

8.3 开操作(cv.morph_open)

算子名称 cv.morph_open
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Mat dst 结果图像
cv::Point anchor 锚点的位置
int iterations 迭代次数
int borderType 边界模式
cv::Scalar borderValue 边缘值
返回值 cv::Mat 开操作处理后图像
功能描述 对图像进行开操作处理(先将图像腐蚀,然后对腐蚀的结果膨胀)

脚本示例:

  1. src = thre_img --二值化结果图像
  2. dst = open_img
  3. anchor = point(-1, -1)
  4. iterations = 2
  5. borderType = BORDER_CONSTANT
  6. borderValue = morphologyDefaultBorderValue()
  7. open_img = cv.morph_open(src, dst, anchor, iterations, borderType, borderValue)

8.4 闭操作(cv.morph_close)

算子名称 cv.morph_close
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Mat dst 结果图像
cv::Point anchor 锚点的位置
int iterations 迭代次数
int borderType 边界模式
cv::Scalar borderValue 边缘值
返回值 cv::Mat 闭操作处理后图像
功能描述 对图像进行开操作处理(先将图像膨胀,然后对腐蚀的结果腐蚀)

脚本示例:

  1. src = thre_img --二值化结果图像
  2. dst = close_img
  3. anchor = point(-1, -1)
  4. iterations = 2
  5. borderType = BORDER_CONSTANT
  6. borderValue = morphologyDefaultBorderValue()
  7. close_img = cv.morph_close(src, dst, anchor, iterations, borderType, borderValue)

8.5 形态学梯度(cv.morph_gardient)

算子名称 cv.morph_gardient
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Mat dst 结果图像
cv::Point anchor 锚点的位置
int iterations 迭代次数
int borderType 边界模式
cv::Scalar borderValue 边缘值
返回值 cv::Mat 形态学梯度处理后图像
功能描述 膨胀结果图像减腐蚀结果图像,得到源图像目标边缘

脚本示例:

  1. src = thre_img --二值化结果图像
  2. dst = gard_img
  3. anchor = point(-1, -1)
  4. iterations = 2
  5. borderType = BORDER_CONSTANT
  6. borderValue = morphologyDefaultBorderValue()
  7. gard_img = cv.morph_gardient(src, dst, anchor, iterations, borderType, borderValue)

8.5 顶帽操作(cv.morph_tophat)

算子名称 cv.morph_close
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Mat dst 结果图像
cv::Point anchor 锚点的位置
int iterations 迭代次数
int borderType 边界模式
cv::Scalar borderValue 边缘值
返回值 cv::Mat 顶帽操作处理后图像
功能描述 源图像减开操作图像,得到比源图像更亮的环绕部分

脚本示例:

  1. src = thre_img --二值化结果图像
  2. dst = toph_img
  3. anchor = point(-1, -1)
  4. iterations = 2
  5. borderType = BORDER_CONSTANT
  6. borderValue = morphologyDefaultBorderValue()
  7. toph_img = cv.morph_toph(src, dst, anchor, iterations, borderType, borderValue)

8.6 黑帽操作(cv.morph_blackhat)

算子名称 cv.morph_close
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Mat dst 结果图像
cv::Point anchor 锚点的位置
int iterations 迭代次数
int borderType 边界模式
cv::Scalar borderValue 边缘值
返回值 cv::Mat 黑帽操作处理后图像
功能描述 闭操作图像减源图像,得到比源图像更暗的环绕部分

脚本示例:

  1. src = thre_img --二值化结果图像
  2. dst = bckh_img
  3. anchor = point(-1, -1)
  4. iterations = 2
  5. borderType = BORDER_CONSTANT
  6. borderValue = morphologyDefaultBorderValue()
  7. bckh_img = cv.morph_bckh(src, dst, anchor, iterations, borderType, borderValue)

8.7 HMT变换(cv.morph_hitmiss)

算子名称 cv.morph_close
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Mat dst 结果图像
cv::Point anchor 锚点的位置
int iterations 迭代次数
int borderType 边界模式
cv::Scalar borderValue 边缘值
返回值 cv::Mat HMT变换操作处理后图像
功能描述 用来检测特定形状所处位置的一个基本工具

脚本示例:

  1. src = thre_img --二值化结果图像
  2. dst = hmt_img
  3. anchor = point(-1, -1)
  4. iterations = 2
  5. borderType = BORDER_CONSTANT
  6. borderValue = morphologyDefaultBorderValue()
  7. hmt_img = cv.morph_hmt(src, dst, anchor, iterations, borderType, borderValue)

9.分割

9.1 填充区域分割(cv.mask_cut)

算子名称 cv.mask_cut
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Rect r1 矩形填充区域
bool negative 保留或剔除分割部分
返回值 cv::Mat 模糊图像
功能描述 对填充区域进行切割

脚本示例:

  1. src = image
  2. r1 = cv.Rect2f(0, 0, 0.75, 0.25)
  3. negative = true
  4. cut_img = cv.mask_cut(src, r1, negative)

10.提取

10.1 HSV阈值提取(cv.inRange)

算子名称 cv.inRange
参数类型 参数名 参数说明
输入参数 cv::Mat src 输入图像
cv::Scalar &lowerb 下限阈值
cv::Scalar $upperb 上限阈值
返回值 cv::Mat 模糊图像
功能描述 通过颜色阈值,提取指定阈值范围内的区域

脚本示例:

  1. range_img = cv.inRange(hsv_img, cv.Scalar(10, 43, 46), cv.Scalar(25, 255, 255))

11.OpenCV数学计算

11.1 轮廓面积计算

类名称 cv.contourArea
参数类型 参数名 参数说明
属性列表 contours contour 已查找出的轮廓
返回值 double 面积值(像素面积)
功能描述 计算已找出轮廓的面积

脚本示例

  1. area_cnt = cv.contourArea(contour)

12.OpenCV基础类型

12.1 矩形类(cv.Rect2f)

类名称 cv.Rect2f
参数类型 参数名 参数说明
属性列表 float xmin x轴最小值(x轴起始坐标)
float ymin y轴最小值(y轴起始坐标)
float width 矩形宽度
float height 矩形高度
成员函数 cv::Rect2f 定义的矩形
功能描述 指定矩形位置及大小(以上参数数值,均为相对百分数值,非绝对像素值)

脚本示例

  1. xmin = 0.14
  2. ymin = 0.0
  3. width = 0.03
  4. height = 1.0
  5. rect = cv.Rect2f(xmin, ymin, width, height)

12.2 点类 — 浮点型(cv.Point2f)

类名称 cv.Point2f
参数类型 参数名 参数说明
属性列表 float xmin x轴最小值(x轴起始坐标)
float ymin y轴最小值(y轴起始坐标)
成员函数 cv::Point2f Point2f类型的点
功能描述 指定矩形顶点坐标确定位置及大小

脚本示例:

  1. xmin = rect.x
  2. ymin = 0.0
  3. cv.Point2f(rect.x, 0.0)

12.3 点类 — 整型(cv.Point2i)

类名称 cv.Point2i
参数类型 参数名 参数说明
属性列表 int x 横坐标
int y 纵坐标
成员函数 cv::Point2i Point2i类型的点
功能描述 将矩形按指定参数平移,确定感兴趣区域

脚本示例:

  1. x = rect.br.x --指定矩形右下角顶点横坐标值
  2. y = 0 --纵坐标值
  3. cv.Point2i(rect.br.x + 20, 0)

13.OpenCV类型转换

13.1 数据类型转换(cv.convertTo)

算子名称 cv.convertTo
参数类型 参数名 参数说明
输入参数 cv::Mat image 图片
int rtype 目标类型
返回值 cv::Mat 处理后图像
功能描述 转换图片的位深度与通道数

脚本示例:

  1. img = cv.convertTo(img, cv.Mat.CV_8UC3)

13.2 数据类型转换(cv.convertToHSV)

算子名称 cv.convertToHSV
参数类型 参数名 参数说明
输入参数 cv::Mat image 图片
返回值 cv::Mat 处理后图像
功能描述 将RGB格式图片转换为HSV格式图片(一般用于颜色提取)

脚本示例:

  1. HSV_img = cv.convertToHSV(img)