博客
关于我
python cv2截取不规则区域图片
阅读量:796 次
发布时间:2023-03-05

本文共 2117 字,大约阅读时间需要 7 分钟。

知识掌握

cv2.threshold()函数

该函数用于设置固定级别的阈值应用于多通道矩阵,将灰度图像转换为二值图像,或去除指定级别的噪声,或过滤掉过小或者过大的像素点。函数定义如下:

Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst

其中:

  • src:表示图片源
  • thresh:表示阈值(起始值)
  • maxval:表示最大值
  • type:表示阈值的类型,常用值为0(cv2.THRESH_BINARY)

示例代码:

import cv2  img = cv2.imread('1.jpg')  cv2.imshow("src", img)  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  ret, dst = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)  cv2.imshow("dst", dst)  cv2.waitKey(0)

cv2.findContours()函数

该函数用于检测图像中的物体轮廓。函数定义如下:

cv2.findContours(image, mode, method)

函数返回两个值:contourshierarchy。在OpenCV3中,返回三个值:img、contours、hierarchy。其中:

  • image:表示寻找轮廓的图像
  • mode:轮廓检索模式,共有四种取值:
    • cv2.RETR_EXTERNAL:只检测外轮廓
    • cv2.RETR_LIST:检测的轮廓不建立等级关系
    • cv2.RETR_CCOMP:建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息
    • cv2.RETR_TREE:建立一个等级树结构的轮廓
  • method:轮廓近似方法,共有三种取值:
    • cv2.CHAIN_APPROX_NONE:存储所有的轮廓点
    • cv2.CHAIN_APPROX_SIMPLE:压缩水平方向、垂直方向和对角线方向的点,保留关键点
    • cv2.CHAIN_APPROX_TC89_L1、CV_CHAIN_APPROX_TC89_KCOS:使用teh-Chinl chain 近似算法

示例代码:

import numpy as np  import cv2  rectangle = np.zeros((300,300), dtype="uint8")  cv2.rectangle(rectangle, (25,25), (275,275), 255, -1)  cv2.imshow("Rectangle", rectangle)  img, contours, hierarchy = cv2.findContours(rectangle, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  print(contours)  print(hierarchy)  cv2.waitKey(0)

cv2.polylines()函数

该函数用于绘制多边形。函数定义如下:

cv2.polylines(img, pts, isClosed, color[, thickness[, lineType[,shift]]])

参数说明:

  • pts:顶点坐标,需要转换为rowsx1x2形状的数组,rows是顶点数,类型为int32
  • isClosed:布尔值,表示是否闭合多边形
  • color:线条颜色
  • thickness:线条厚度
  • lineType:线条类型
  • shift:线条偏移量

示例代码:

import numpy as np  import cv2  # 创建黑色图像  img = np.zeros((200, 200, 3), np.uint8)  pts = np.array([[10, 5], [20, 30], [70, 20], [80, 15]])  cv2.polylines(img, pts, True, (0, 255, 0), 2, cv2.LINE_AA, shift=1)  cv2.imshow("Polylines", img)  cv2.waitKey(0)

转载地址:http://gvafk.baihongyu.com/

你可能感兴趣的文章
pyinstaller超级加密 (加壳和转c)
查看>>
pyinstaller错误:OSError:找不到Python库:libpython3.4mu.so.1.0、libpython3.4m.so.1.0、libpython3.4.so.1.0
查看>>
Pyinstaller:‘;Fiona‘;没有属性‘;_loading‘;(很可能是由于循环导入)
查看>>
pyinstaller:更改应用程序图标
查看>>
Pylint“未解决的导入“;Visual Studio 代码中的错误
查看>>
pyLoad远程代码执行漏洞复现(CVE-2023-0297)
查看>>
pymongo update_one(),upsert=True,不使用$运算符
查看>>
pymongo 中的快速或批量更新
查看>>
pymongo删除操作
查看>>
PyMongo按多个关键点分组
查看>>
Pympress:强大的双屏PDF阅读器
查看>>
pymysql.err.InternalError: (1054, "Unknown column '27D24A3B' in 'where clause'")之错误解决
查看>>
pymysql.err.OperationalError: (1364, “Field ‘id‘ doesn‘t have a default value“)
查看>>
Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()
查看>>
PyMySQL库对Mysql数据库进行增删改查与工具类封装
查看>>
pynput的基本介绍和使用
查看>>
pyodbc 通过 IIS7 连接到 MSSQL 2005 服务器
查看>>
PyPI 存储库中的 JarkaStealer:深入解析与防范措施
查看>>
Pyplot tutorial,Pyplot官方教程自翻译
查看>>
PyQ5学习笔记——使用内部槽函数关闭窗口
查看>>