def getAreaImage(self,
                     image,
                     row,
                     size_input,
                     size_cropped,
                     size_output,
                     pose=None,
                     border_color=None):
        action = Action()
        action.fromPandas(row)

        border_color = border_color if border_color else self.border_color
        area_image = helper.getAreaOfInterest(image,
                                              action,
                                              size_cropped,
                                              border_color=border_color)
        return cv2.resize(area_image, size_output)
예제 #2
0
def api_image(id):
    def send_image(image):
        _, image_encoded = cv2.imencode('.jpg', image)
        return flask.send_file(io.BytesIO(image_encoded),
                               mimetype='image/jpeg')

    database = os.path.expanduser(flask.request.args.get('database'))
    suffix = flask.request.args.get('suffix', default='v')
    image = cv2.imread(
        os.path.dirname(database) +
        '/measurement/image-{}-{}.png'.format(id, suffix))
    if image is None:
        empty = np.zeros((480, 752, 1))
        cv2.putText(empty,
                    '?', (310, 300),
                    cv2.FONT_HERSHEY_SIMPLEX,
                    6,
                    100,
                    thickness=6)
        return send_image(empty)

    with sqlite3.connect(database) as conn:
        action = Action()
        data = pandas.read_sql_query('select * from measurement where id = ?;',
                                     conn,
                                     params=[id])
        if not data.empty:
            try:
                action.fromPandas(data.iloc[0])
                helper.drawPose(image, action)
            except:
                pass
        elif flask.request.args.get('pose'):
            action.fromJson(flask.request.args.get('pose'))
            helper.drawPose(image, action)

        if int(flask.request.args.get('bin', default=0)):
            helper.drawAroundBin(image, draw_lines=True)

    return send_image(image)