博客
关于我
python cv2截取不规则区域图片
阅读量:804 次
发布时间: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/

你可能感兴趣的文章
Python os.system执行多条语句,os.system的返回值以及与os.popen的区别
查看>>
Python os和sys模块
查看>>
python os文件/目录
查看>>
Python Package 之 Faker(随机姓名、电话)
查看>>
python运算符优先级
查看>>
Python Panda TIME 系列重新采样
查看>>
python pandas TimeStamps到夏令时的本地时间字符串
查看>>
Python pandas 数据清洗与数据绘图实战
查看>>
Python Pandas 用顶行替换标题
查看>>
Python pandas 通过 dt 访问器有效地将日期时间转换为时间戳
查看>>
Python Pandas-从DataFrame按类别绘制多个条形图
查看>>
Python Pandas:每月或每周拆分 TimeSerie
查看>>
python pandas中融化的对面
查看>>
python pandas从时间序列中提取唯一日期
查看>>
Python Pypi 修改 国内源(以豆瓣源为例)
查看>>
Python PyQt5 将不再显示此消息复选框添加到 QMessageBox
查看>>
Python PyQt5:如何使用 PyQt5 显示错误消息
查看>>
Python PYSFTP-以字符串/文本形式传递私钥,而不是传递文件路径
查看>>
Python pytest 面试题!
查看>>
Python pytz 时区函数返回一个相差 9 分钟的时区
查看>>