edged_image = cv2.Canny(blurr_image, 195,240,)
时间: 2023-07-14 18:12:35 浏览: 81
这段代码使用了OpenCV库中的Canny函数,对blurr_image进行边缘检测。函数的第一个参数是需要进行边缘检测的图像,第二个和第三个参数是边缘阈值的上界和下界,超过上界的像素点会被认为是边缘,低于下界的像素点则不会被认为是边缘,介于两者之间的像素点则根据其与上下界的距离来进行判断。在这里,上界为240,下界为195。函数返回的是一个二值图像,其中边缘的像素点值为255,非边缘的像素点值为0。
相关问题
cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0] cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:5]
这段代码使用OpenCV的cv2.findContours函数从边缘图像中查找轮廓。
首先,edged.copy()创建了 edged 的副本,以确保原始图像不会被修改。
然后,cv2.findContours函数被调用,它接受三个参数:
- 第一个参数是边缘图像
- 第二个参数是轮廓检索模式,这里使用cv2.RETR_LIST表示检索所有的轮廓
- 第三个参数是轮廓近似方法,这里使用cv2.CHAIN_APPROX_SIMPLE表示使用简单的近似方法来存储轮廓的点
cv2.findContours函数的返回值是一个包含所有轮廓的列表,其中每个轮廓都是一个NumPy数组。
接下来,使用sorted函数对轮廓进行排序。排序的依据是每个轮廓的面积,通过调用cv2.contourArea函数来计算。参数reverse=True表示按照面积从大到小进行排序。
最后,通过切片操作[:5]取出前5个面积最大的轮廓,并将结果保存在cnts变量中。
cnts, hierarchy = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
这行代码使用OpenCV库中的findContours函数来查找图像中的轮廓。函数的第一个参数是二值化后的图像,第二个参数指定轮廓检索模式,第三个参数指定轮廓逼近方法。函数返回两个值,第一个是轮廓数组,第二个是轮廓的层次结构。在这里,我们使用的是RETR_LIST模式,它只返回所有的轮廓,而不去创建任何父子关系。CHAIN_APPROX_SIMPLE是一种逼近方法,尝试将轮廓形状近似到一个更简单的形状,这里是一个由直线段组成的多边形。
阅读全文