概述
本文需要参考的内容:
- cv2.threshold 请参考:https://blog.csdn.net/weixin_42296411/article/details/80901080
- cv2.findContours 请参考:https://blog.csdn.net/Easen_Yu/article/details/89365497
具体内容如下:
图片内容
step1
import cv2
import numpy as np
img = cv2.imread('binary_img.jpeg',0) # 0代表以灰度模式读入图片
print('img's shape is: {}'.format(img.shape))
cv2.imshow('raw',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
显示结果如下:
img's shape is: (158, 230)
step 2
retval, dst = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) # retval就是返回的阈值; 我们设定的阈值就是127
print('retval is: {}'.format(retval))
for instanceId in np.unique(dst):
print('instanceId is: {}'.format(instanceId))
cv2.imshow('dst',dst)
cv2.waitKey(0)
# if k ==27: # 键盘上Esc键的键值
cv2.destroyAllWindows()
结果如下:
retval is: 127.0
instanceId is: 0
instanceId is: 255
step 3
# mode = cv2.RETR_EXTERNAL method = cv2.CHAIN_APPROX_NONE
contour, _ = cv2.findContours(dst.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
print('The type of contour is: {}'.format(type(contour)))
print('{} polygon(s) in the contour'.format(np.array(contour).shape[0]))
for i in contour:
print(i.shape)
结果如下:
The type of contour is: <class 'list'>
3 polygon(s) in the contour
(40, 1, 2)
(66, 1, 2)
(28, 1, 2)
step 4
# reshape(-1)把数据转换成一维了
polygons = [c.reshape(-1).tolist() for c in contour]
for cont in polygons:
print(np.array(cont).shape)
结果如下:
(80,)
(132,)
(56,)
step 5
# 通过polygon找box
def polys_to_boxes(polys):
"""Convert a list of polygons into an array of tight bounding boxes."""
boxes_from_polys = np.zeros((len(polys), 4), dtype=np.float32)
for i in range(len(polys)): # poly的shape应该是(c,n),c代表多边形的个数,n代表该多边形顶点个数的2倍。
poly = polys[i] # 这种写法对吗???
x0 = min(poly[::2])
x1 = max(poly[::2])
y0 = min(poly[1::2])
y1 = max(poly[1::2])
boxes_from_polys[i, :] = [x0, y0, x1, y1]
return boxes_from_polys
adc = polys_to_boxes(polygons)
print(adc)
[[158. 88. 173. 101.]
[ 56. 64. 78. 88.]
[143. 62. 154. 70.]]
最后
以上就是幸福睫毛为你收集整理的cv2.findContours、cv2.threshold函数的用法举例的全部内容,希望文章能够帮你解决cv2.findContours、cv2.threshold函数的用法举例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复