求解释下这两个python自定义函数做了什么操作
import cv2def sort_contours(cnts, method="left-to-right"):
reverse = False
i = 0
if method == "right-to-left" or method == "bottom-to-top":
reverse = True
if method == "top-to-bottom" or method == "bottom-to-top":
i = 1
boundingBoxes = #用一个最小的矩形,把找到的形状包起来x,y,h,w
(cnts, boundingBoxes) = zip(*sorted(zip(cnts, boundingBoxes),
key=lambda b: b, reverse=reverse))
return cnts, boundingBoxes
def resize(image, width=None, height=None, inter=cv2.INTER_AREA):
dim = None
(h, w) = image.shape[:2]
if width is None and height is None:
return image
if width is None:
r = height / float(h)
dim = (int(w * r), height)
else:
r = width / float(w)
dim = (width, int(h * r))
resized = cv2.resize(image, dim, interpolation=inter)
return resized
顾名思义 第一个排序 第二个 重新定义大小 wsj0123 发表于 2021-4-8 20:15
顾名思义 第一个排序 第二个 重新定义大小
啊这。。。就这样嘛? 看起来是识别到某种物体以后用框线标记出来吧,函数的名字也很清晰,就和楼上说的一样。 本帖最后由 victornanka 于 2021-4-8 21:51 编辑
挺简单的,不太懂opencv的我看函数都看懂了,
顾名思义
第一个是排序轮廓
先根据排序方法的参数看看是否reverse,然后在lambda里调用改顺序后排序再打包返回
第二个是重新调整图片大小
先判断给定的长宽合不合法
长宽都不指定就直接返回
给定其中一个就根据长或宽放缩
# --------------------------------------------------------------------
# 【轮廓排序函数】
# 输入:轮廓,排序方式
# 输出:排序好的轮廓
#https://github.com/jrosebr1/imutils/blob/master/imutils/contours.py
# --------------------------------------------------------------------
def sort_contours(cnts, method="left-to-right"):
# 初始化逆序标志和排序索引
reverse = False
i = 0
# 是否需逆序处理
if method == "right-to-left" or method == "bottom-to-top":
reverse = True
# 是否需要按照y坐标函数
if method == "top-to-bottom" or method == "bottom-to-top":
i = 1
# 构造包围框列表,并从上到下对它们进行排序
boundingBoxes =
(cnts, boundingBoxes) = zip(*sorted(zip(cnts, boundingBoxes),key=lambda b: b, reverse=reverse))
# 返回已排序的轮廓线和边框列表
return cnts, boundingBoxes
也是从网上看到的 6楼正解{:1_921:}
页:
[1]