def find_goal(img):
# converting to HSV
frame = copy.copy(img)
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
#show_image(hsv)
lower_blue = np.array([113, 40, 29])
upper_blue = np.array([123, 180, 255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
#show_image(mask)
result = cv2.bitwise_and(frame, frame, mask=mask)
#show_image(result)
blur = cv2.blur(result, (5, 5))
bw = cv2.cvtColor(blur, cv2.COLOR_HSV2BGR)
bw2 = cv2.cvtColor(bw, cv2.COLOR_BGR2GRAY)
ret, th3 = cv2.threshold(bw2, 30, 255, cv2.THRESH_BINARY)
# th3 = cv2.adaptiveThreshold(bw2,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
# cv2.THRESH_BINARY,11,2)
edges = cv2.Canny(th3, 100, 200)
th4 = copy.copy(th3)
perimeter = 0
j = 0
image, contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
# print len(contours)
# if(len(contours) > 5):
# continue
cnt = np.array([])
for i in range(len(contours)):
if (perimeter < cv2.contourArea(contours[i])):
perimeter = cv2.contourArea(contours[i])
j = i;
cnt = contours[j]
if (len(cnt) == 0):
return (-1, -1)
cv2.drawContours(frame, cnt, -1, (0, 255, 0), 3)
x = 0
y = 0
#print 'find goal'
#print len(cnt), j
#print cnt
for i in range(len(cnt)):
x = x + cnt[i][0][0]
y = y + cnt[i][0][1]
x = x/len(cnt)
y = y/len(cnt)
#print x, y
x = int(x)
y = int(y)
cv2.circle(frame, (x, y), 5, (255, 0, 255), -1)
cv2.imshow('image', frame)
cv2.imwrite('goal.jpg', frame)
k = cv2.waitKey(0)
return (int(x), int(y))
Artificial-potential-controller.py 文件源码
python
阅读 26
收藏 0
点赞 0
评论 0
评论列表
文章目录