def drawAxis(camera_parameters, markers, frame):
axis = np.float32([[1,0,0], [0,1,0], [0,0,1]]).reshape(-1,3)
mtx, dist = camera_parameters.camera_matrix, camera_parameters.dist_coeff
for marker in markers:
rvec, tvec = marker.rvec, marker.tvec
imgpts, jac = cv2.projectPoints(axis, rvec, tvec, mtx, dist)
corners = marker.corners
corner = tuple(corners[0].ravel())
cv2.line(frame, corner, tuple(imgpts[0].ravel()), (0,0,255), 2)
cv2.line(frame, corner, tuple(imgpts[1].ravel()), (0,255,0), 2)
cv2.line(frame, corner, tuple(imgpts[2].ravel()), (255,0,0), 2)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame, 'X', tuple(imgpts[0].ravel()), font, 0.5, (0,0,255), 2, cv2.LINE_AA)
cv2.putText(frame, 'Y', tuple(imgpts[1].ravel()), font, 0.5, (0,255,0), 2, cv2.LINE_AA)
cv2.putText(frame, 'Z', tuple(imgpts[2].ravel()), font, 0.5, (255,0,0), 2, cv2.LINE_AA)
python类line()的实例源码
def drawBox(camera_parameters, markers, frame):
objpts = np.float32([[0,0,0], [1,0,0], [1,1,0], [0,1,0],
[0,0,1], [1,0,1], [1,1,1], [0,1,1]]).reshape(-1,3)
mtx, dist = camera_parameters.camera_matrix, camera_parameters.dist_coeff
for marker in markers:
rvec, tvec = marker.rvec, marker.tvec
imgpts, jac = cv2.projectPoints(objpts, rvec, tvec, mtx, dist)
cv2.line(frame, tuple(imgpts[0].ravel()), tuple(imgpts[1].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[1].ravel()), tuple(imgpts[2].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[2].ravel()), tuple(imgpts[3].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[3].ravel()), tuple(imgpts[0].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[0].ravel()), tuple(imgpts[0+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[1].ravel()), tuple(imgpts[1+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[2].ravel()), tuple(imgpts[2+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[3].ravel()), tuple(imgpts[3+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[0+4].ravel()), tuple(imgpts[1+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[1+4].ravel()), tuple(imgpts[2+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[2+4].ravel()), tuple(imgpts[3+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[3+4].ravel()), tuple(imgpts[0+4].ravel()), (0,0,255), 2)
def drawAxis(camera_parameters, markers, frame):
axis = np.float32([[1,0,0], [0,1,0], [0,0,1]]).reshape(-1,3)
mtx, dist = camera_parameters.camera_matrix, camera_parameters.dist_coeff
for marker in markers:
rvec, tvec = marker.rvec, marker.tvec
imgpts, jac = cv2.projectPoints(axis, rvec, tvec, mtx, dist)
corners = marker.corners
corner = tuple(corners[0].ravel())
cv2.line(frame, corner, tuple(imgpts[0].ravel()), (0,0,255), 2)
cv2.line(frame, corner, tuple(imgpts[1].ravel()), (0,255,0), 2)
cv2.line(frame, corner, tuple(imgpts[2].ravel()), (255,0,0), 2)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame, 'X', tuple(imgpts[0].ravel()), font, 0.5, (0,0,255), 2, cv2.LINE_AA)
cv2.putText(frame, 'Y', tuple(imgpts[1].ravel()), font, 0.5, (0,255,0), 2, cv2.LINE_AA)
cv2.putText(frame, 'Z', tuple(imgpts[2].ravel()), font, 0.5, (255,0,0), 2, cv2.LINE_AA)
def drawAxis(camera_parameters, markers, frame):
axis = np.float32([[1,0,0], [0,1,0], [0,0,1]]).reshape(-1,3)
mtx, dist = camera_parameters.camera_matrix, camera_parameters.dist_coeff
for marker in markers:
rvec, tvec = marker.rvec, marker.tvec
imgpts, jac = cv2.projectPoints(axis, rvec, tvec, mtx, dist)
corners = marker.corners
corner = tuple(corners[0].ravel())
cv2.line(frame, corner, tuple(imgpts[0].ravel()), (0,0,255), 2)
cv2.line(frame, corner, tuple(imgpts[1].ravel()), (0,255,0), 2)
cv2.line(frame, corner, tuple(imgpts[2].ravel()), (255,0,0), 2)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame, 'X', tuple(imgpts[0].ravel()), font, 0.5, (0,0,255), 2, cv2.LINE_AA)
cv2.putText(frame, 'Y', tuple(imgpts[1].ravel()), font, 0.5, (0,255,0), 2, cv2.LINE_AA)
cv2.putText(frame, 'Z', tuple(imgpts[2].ravel()), font, 0.5, (255,0,0), 2, cv2.LINE_AA)
def drawBox(camera_parameters, markers, frame):
objpts = np.float32([[0,0,0], [1,0,0], [1,1,0], [0,1,0],
[0,0,1], [1,0,1], [1,1,1], [0,1,1]]).reshape(-1,3)
mtx, dist = camera_parameters.camera_matrix, camera_parameters.dist_coeff
for marker in markers:
rvec, tvec = marker.rvec, marker.tvec
imgpts, jac = cv2.projectPoints(objpts, rvec, tvec, mtx, dist)
cv2.line(frame, tuple(imgpts[0].ravel()), tuple(imgpts[1].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[1].ravel()), tuple(imgpts[2].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[2].ravel()), tuple(imgpts[3].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[3].ravel()), tuple(imgpts[0].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[0].ravel()), tuple(imgpts[0+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[1].ravel()), tuple(imgpts[1+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[2].ravel()), tuple(imgpts[2+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[3].ravel()), tuple(imgpts[3+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[0+4].ravel()), tuple(imgpts[1+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[1+4].ravel()), tuple(imgpts[2+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[2+4].ravel()), tuple(imgpts[3+4].ravel()), (0,0,255), 2)
cv2.line(frame, tuple(imgpts[3+4].ravel()), tuple(imgpts[0+4].ravel()), (0,0,255), 2)
def draw_debug(img, pose, gt_pose, tracker, alpha, debug_info):
if debug_info is not None:
img_render, bb, _ = debug_info
img_render = cv2.resize(img_render, (bb[2, 1] - bb[0, 1], bb[1, 0] - bb[0, 0]))
crop = img[bb[0, 0]:bb[1, 0], bb[0, 1]:bb[2, 1], :]
h, w, c = crop.shape
blend = image_blend(img_render[:h, :w, ::-1], crop)
img[bb[0, 0]:bb[1, 0], bb[0, 1]:bb[2, 1], :] = cv2.addWeighted(img[bb[0, 0]:bb[1, 0], bb[0, 1]:bb[2, 1], :],
1 - alpha, blend, alpha, 1)
else:
axis = compute_axis(pose, tracker.camera, tracker.object_width, scale=(1000, -1000, -1000))
axis_gt = compute_axis(gt_pose, tracker.camera, tracker.object_width, scale=(1000, -1000, -1000))
cv2.line(img, tuple(axis_gt[0, ::-1]), tuple(axis_gt[1, ::-1]), (0, 0, 155), 3)
cv2.line(img, tuple(axis_gt[0, ::-1]), tuple(axis_gt[2, ::-1]), (0, 155, 0), 3)
cv2.line(img, tuple(axis_gt[0, ::-1]), tuple(axis_gt[3, ::-1]), (155, 0, 0), 3)
cv2.line(img, tuple(axis[0, ::-1]), tuple(axis[1, ::-1]), (0, 0, 255), 3)
cv2.line(img, tuple(axis[0, ::-1]), tuple(axis[2, ::-1]), (0, 255, 0), 3)
cv2.line(img, tuple(axis[0, ::-1]), tuple(axis[3, ::-1]), (255, 0, 0), 3)
def _process_image(self, image):
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hsv = cv2.medianBlur(hsv, 5)
draw_col = (0,0,255)
p1 = (self.edges['l'], self.edges['d'])
p2 = (self.edges['r'], self.edges['u'])
cv2.rectangle(hsv, p1, p2, draw_col)
vert_spacing = (self.edges['r'] - self.edges['l'])/float(len(grid))
for i in range(1, len(grid)):
x_pos = int(self.edges['l'] + i*vert_spacing)
p1 = (x_pos, self.edges['d'])
p2 = (x_pos, self.edges['u'])
cv2.line(hsv, p1, p2, draw_col)
horiz_spacing = (self.edges['d'] - self.edges['u'])/float(len(grid[0]))
for i in range(1, len(grid[0])):
y_pos = int(self.edges['u'] + i*horiz_spacing)
p1 = (self.edges['l'], y_pos)
p2 = (self.edges['r'], y_pos)
cv2.line(hsv, p1, p2, draw_col)
return hsv
def draw_correspondences(img, dstpoints, projpts):
display = img.copy()
dstpoints = norm2pix(img.shape, dstpoints, True)
projpts = norm2pix(img.shape, projpts, True)
for pts, color in [(projpts, (255, 0, 0)),
(dstpoints, (0, 0, 255))]:
for point in pts:
cv2.circle(display, fltp(point), 3, color, -1, cv2.LINE_AA)
for point_a, point_b in zip(projpts, dstpoints):
cv2.line(display, fltp(point_a), fltp(point_b),
(255, 255, 255), 1, cv2.LINE_AA)
return display
def visualize_contours(name, small, cinfo_list):
regions = np.zeros_like(small)
for j, cinfo in enumerate(cinfo_list):
cv2.drawContours(regions, [cinfo.contour], 0,
CCOLORS[j % len(CCOLORS)], -1)
mask = (regions.max(axis=2) != 0)
display = small.copy()
display[mask] = (display[mask]/2) + (regions[mask]/2)
for j, cinfo in enumerate(cinfo_list):
color = CCOLORS[j % len(CCOLORS)]
color = tuple([c/4 for c in color])
cv2.circle(display, fltp(cinfo.center), 3,
(255, 255, 255), 1, cv2.LINE_AA)
cv2.line(display, fltp(cinfo.point0), fltp(cinfo.point1),
(255, 255, 255), 1, cv2.LINE_AA)
debug_show(name, 1, 'contours', display)
def visualize_span_points(name, small, span_points, corners):
display = small.copy()
for i, points in enumerate(span_points):
points = norm2pix(small.shape, points, False)
mean, small_evec = cv2.PCACompute(points.reshape((-1, 2)),
None,
maxComponents=1)
dps = np.dot(points.reshape((-1, 2)), small_evec.reshape((2, 1)))
dpm = np.dot(mean.flatten(), small_evec.flatten())
point0 = mean + small_evec * (dps.min()-dpm)
point1 = mean + small_evec * (dps.max()-dpm)
for point in points:
cv2.circle(display, fltp(point), 3,
CCOLORS[i % len(CCOLORS)], -1, cv2.LINE_AA)
cv2.line(display, fltp(point0), fltp(point1),
(255, 255, 255), 1, cv2.LINE_AA)
cv2.polylines(display, [norm2pix(small.shape, corners, True)],
True, (255, 255, 255))
debug_show(name, 3, 'span points', display)
def draw_joints(test_image, joints, save_image):
image = cv2.imread(test_image)
joints = np.vstack((joints, (joints[8, :] + joints[11, :])/2))
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 2)
# draw torso in yellow lines
torso = [[0, 1], [1, 14], [2, 14], [5, 14]]
for item in torso:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 2)
# draw left part in pink lines
lpart = [[1, 5], [5, 6], [6, 7], [5, 14], [14, 11], [11, 12], [12, 13]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 2)
# draw right part in blue lines
rpart = [[1, 2], [2, 3], [3, 4], [2, 14], [14, 8], [8, 9], [9, 10]]
for item in rpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 2)
cv2.imwrite(save_image, image)
def draw_joints_15(test_image, joints, save_image):
image = cv2.imread(test_image)
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 1)
# draw torso in yellow lines
torso = [[0, 1], [0, 14], [5, 10]]
for item in torso:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 1)
# draw left part in pink lines
lpart = [[14, 13], [13, 12], [12, 11], [13, 10], [10, 9], [9, 8]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 1)
# draw right part in blue lines
rpart = [[1, 2], [2, 3], [3, 4], [2, 5], [5, 6], [6, 7]]
for item in rpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 1)
cv2.imwrite(save_image, image)
def draw_joints_13(test_image, joints, save_image):
image = cv2.imread(test_image)
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 2)
# draw torso in yellow lines
torso = [[0, 1], [1, 8]]
for item in torso:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 2)
# draw left part in pink lines
lpart = [[1, 3], [3, 5], [5, 7], [3, 8], [8, 10], [10, 12]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 2)
# draw right part in blue lines
rpart = [[1, 2], [2, 4], [4, 6], [2, 8], [8, 9], [9, 11]]
for item in rpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 2)
cv2.imwrite(save_image, image)
def draw_joints_17(test_image, joints, save_image):
image = cv2.imread(test_image)
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 2)
# draw head in yellow lines
head = [[0, 1], [0, 2], [1, 3], [2, 4], [3, 5], [4, 6]]
for item in head:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 2)
# draw upper part in pink lines
upart = [[5, 6], [5, 7], [6, 8], [7, 9], [8, 10], [5, 11], [6, 12], [11, 12]]
for item in upart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 2)
# draw lower part in blue lines
lpart = [[11, 13], [12, 14], [13, 15], [14, 16]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 2)
cv2.imwrite(save_image, image)
def draw_joints_16(test_image, joints, save_image):
image = cv2.imread(test_image)
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 2)
# draw torso in yellow lines
torso = [[9, 8], [8, 7], [7, 6]]
for item in torso:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 2)
# draw left part in pink lines
lpart = [[8, 13], [13, 14], [14, 15], [13, 6], [6, 3], [3, 4], [4, 5]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 2)
# draw right part in blue lines
rpart = [[8, 12], [12, 11], [11, 10], [12, 6], [6, 2], [2, 1], [1, 0]]
for item in rpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 2)
cv2.imwrite(save_image, image)
def draw_gt_market(test_image, joints, save_image):
image = cv2.imread(test_image)
# draw joints in green spots
for j in xrange(len(joints) / 2):
cv2.circle(image, (joints[j * 2], joints[j * 2 + 1]), 2, (0, 255, 0), 1)
# draw torso in yellow lines
p1 = [0, 0, 5]
p2 = [1, 14, 10]
for j in xrange(len(p1)):
cv2.line(image, (joints[p1[j] * 2], joints[p1[j] * 2 + 1]), (joints[p2[j] * 2], joints[p2[j] * 2 + 1]),
(0, 255, 255), 1)
# draw left part in pink lines
p1 = [14, 13, 12, 13, 10, 9]
p2 = [13, 12, 11, 10, 9, 8]
for j in xrange(len(p1)):
cv2.line(image, (joints[p1[j] * 2], joints[p1[j] * 2 + 1]), (joints[p2[j] * 2], joints[p2[j] * 2 + 1]),
(255, 0, 255), 1)
# draw right part in blue lines
p1 = [1, 2, 3, 2, 5, 6]
p2 = [2, 3, 4, 5, 6, 7]
for j in xrange(len(p1)):
cv2.line(image, (joints[p1[j] * 2], joints[p1[j] * 2 + 1]), (joints[p2[j] * 2], joints[p2[j] * 2 + 1]),
(255, 0, 0), 1)
cv2.imwrite(save_image, image)
def draw_joints(test_image, joints, save_image):
image = cv2.imread(test_image)
joints = np.vstack((joints, (joints[8, :] + joints[11, :])/2))
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 2)
# draw torso in yellow lines
torso = [[0, 1], [1, 14], [2, 14], [5, 14]]
for item in torso:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 2)
# draw left part in pink lines
lpart = [[1, 5], [5, 6], [6, 7], [5, 14], [14, 11], [11, 12], [12, 13]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 2)
# draw right part in blue lines
rpart = [[1, 2], [2, 3], [3, 4], [2, 14], [14, 8], [8, 9], [9, 10]]
for item in rpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 2)
cv2.imwrite(save_image, image)
def draw_joints_15(test_image, joints, save_image):
image = cv2.imread(test_image)
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 1)
# draw torso in yellow lines
torso = [[0, 1], [0, 14], [5, 10]]
for item in torso:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 1)
# draw left part in pink lines
lpart = [[14, 13], [13, 12], [12, 11], [13, 10], [10, 9], [9, 8]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 1)
# draw right part in blue lines
rpart = [[1, 2], [2, 3], [3, 4], [2, 5], [5, 6], [6, 7]]
for item in rpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 1)
cv2.imwrite(save_image, image)
def draw_joints_13(test_image, joints, save_image):
image = cv2.imread(test_image)
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 2)
# draw torso in yellow lines
torso = [[0, 1], [1, 8]]
for item in torso:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 2)
# draw left part in pink lines
lpart = [[1, 3], [3, 5], [5, 7], [3, 8], [8, 10], [10, 12]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 2)
# draw right part in blue lines
rpart = [[1, 2], [2, 4], [4, 6], [2, 8], [8, 9], [9, 11]]
for item in rpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 2)
cv2.imwrite(save_image, image)
def draw_joints_17(test_image, joints, save_image):
image = cv2.imread(test_image)
# bounding box
bbox = [min(joints[:, 0]), min(joints[:, 1]), max(joints[:, 0]), max(joints[:, 1])]
# draw bounding box in red rectangle
cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 0, 255), 2)
# draw joints in green spots
for j in xrange(len(joints)):
cv2.circle(image, (joints[j, 0], joints[j, 1]), 5, (0, 255, 0), 2)
# draw head in yellow lines
head = [[0, 1], [0, 2], [1, 3], [2, 4], [3, 5], [4, 6]]
for item in head:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (0, 255, 255), 2)
# draw upper part in pink lines
upart = [[5, 6], [5, 7], [6, 8], [7, 9], [8, 10], [5, 11], [6, 12], [11, 12]]
for item in upart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 255), 2)
# draw lower part in blue lines
lpart = [[11, 13], [12, 14], [13, 15], [14, 16]]
for item in lpart:
cv2.line(image, (joints[item[0], 0], joints[item[0], 1]), (joints[item[1], 0], joints[item[1], 1]), (255, 0, 0), 2)
cv2.imwrite(save_image, image)