Skip to content

Commit

Permalink
Merge pull request #8 from KatLab-MiyazakiUniv/ticket-KLI-200
Browse files Browse the repository at this point in the history
close #KLI-200 A, Bエリアで撮影した画像を競技システムに送信する
  • Loading branch information
bizyutyu authored Nov 6, 2024
2 parents 888cabf + 14068cc commit 8300949
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 30 deletions.
47 changes: 25 additions & 22 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion scripts/kill_official_server.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
# - テスト用の競技システムとLANケーブルで接続している

KILL_SERVER_COMMAND='ps aux | grep node | grep -v "grep" | awk '\''{print $2}'\'' | sudo xargs -r kill -9'
ssh et2024@official-system "$KILL_SERVER_COMMAND"
ssh taki@192.168.11.26 "$KILL_SERVER_COMMAND"
2 changes: 1 addition & 1 deletion scripts/run_official_server.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
# - テスト用の競技システムとLANケーブルで接続している

RUN_SERVER_COMMAND="cd /opt/compesys && sudo npm run start"
ssh et2024@official-system "${RUN_SERVER_COMMAND}"
ssh taki@192.168.11.26 "${RUN_SERVER_COMMAND}"
75 changes: 75 additions & 0 deletions src/image_processor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"""
画像処理に関するクラス.
@author bizyutyu
"""

import cv2
import numpy as np
import os


class ImageProcessor:
"""画像の先鋭化のためのクラス."""

@staticmethod
def sharpen_image(image_path: str) -> str:
"""画像の先鋭化処理を行うメソッド.
手法:カラー画像のアンシャープマスクを用いる
Args:
image_path(str): 先鋭化対象の画像パス
Return:
sharpened_image_path: 先鋭化後画像パス
Raises:
FileNotFoundError: 画像が見つからない場合に発生
"""
try:
# 読み込み
img = cv2.imread(image_path, cv2.IMREAD_UNCHANGED)

if img is None:
raise FileNotFoundError(f"'{image_path}' is not found")

# アンシャープマスクを適用する
blurred = cv2.GaussianBlur(img, (0, 0), 2) # ぼかし処理

# 引数: 元画像, 元の画像に対する加重係数(強度)
# ブラー画像, ブラー画像に対する減重係数(強度), 画像の明るさ(0は無視)
result = cv2.addWeighted(img, 2.5, blurred, -1.5, 0) # 差分から鮮明化

# 出力パスの生成
dir_path = os.path.dirname(image_path)
file_name = os.path.basename(image_path)
sharpened_image_path = os.path.join(dir_path,
f"Sharpened_{file_name}")

# 先鋭化画像保存処理
os.makedirs(os.path.dirname(sharpened_image_path), exist_ok=True)
cv2.imwrite(sharpened_image_path, result)

return sharpened_image_path

except FileNotFoundError as e:
print("Error:", e)
return None

# if __name__ == '__main__':

# import argparse

# parser = argparse.ArgumentParser(description="画像処理に関するプログラム")

# parser.add_argument("-ipath", "--image_path", type=str,
# default=IMAGE_DIR_PATH/'test_image.jpeg', help='入力画像')

# args = parser.parse_args()

# sharpened_image = ImageProcessor.sharpen_image(args.input_path)

# if sharpened_image:
# print(f"先鋭化完了。結果は {sharpened_image_path} に保存しています。")
# else:
# print("先鋭化失敗。")
43 changes: 37 additions & 6 deletions src/server/flask_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from ..csv_to_json import CSVToJSONConverter
from ..official_interface import OfficialInterface
from ..detect_object import DetectObject
from ..image_processor import ImageProcessor

from flask import Flask, request, jsonify, send_file

Expand Down Expand Up @@ -62,11 +63,18 @@ def get_image() -> jsonify:
file_path = os.path.join(upload_folder, file_name)
file.save(file_path)

# TODO: 現在は、1枚目のフィグ画像、プラレール画像の場合に競技システムへアップロードしている
if file_name == 'Fig_1.jpeg' or file_name == 'Pla.jpeg':
OfficialInterface.upload_snap(file_path)
# 画像の先鋭化処理を行う
sharpened_file_path = ImageProcessor.sharpen_image(file_path)

return jsonify({"message": "File uploaded successfully"}), 200
if sharpened_file_path:
# 先鋭化した画像ファイルを競技システムに送信する
OfficialInterface.upload_snap(sharpened_file_path)
return jsonify({"message":
"Sharpened File uploaded successfully"}), 200
else:
# 受け取った画像ファイルを競技システムに送信する
OfficialInterface.upload_snap(file_path)
return jsonify({"message": "File uploaded successfully"}), 200

# '/detect'へのPOSTリクエストに対する操作

Expand Down Expand Up @@ -112,15 +120,38 @@ def get_detection_image() -> jsonify:
with open(empty_file, 'w') as file:
pass

# 判定したふぃぐの向きがが正面だった場合、競技システムに送信する
if cls == 0:
# 画像の先鋭化処理を行う
sharpened_file_path = ImageProcessor.sharpen_image(file_path)

if sharpened_file_path:
# 先鋭化したふぃぐ画像を競技システムに送信する
OfficialInterface.upload_snap(sharpened_file_path)
else:
# ふぃぐ画像をそのまま競技システムに送信する
OfficialInterface.upload_snap(file_path)

return send_file(empty_file,
as_attachment=True,
download_name=empty_file,
mimetype='text/plain'), 200
except Exception:
print("Error: detect failed")
objects = []
return jsonify({"message": "File uploaded successfully",
"detect_results": "detect failed"}), 200
cls = -1
empty_file = os.path.abspath(f"{cls}_skip_camera_action.flag")

# 空のフラグ管理用ファイルを作成
with open(empty_file, 'w') as file:
pass

OfficialInterface.upload_snap(file_path)

return send_file(empty_file,
as_attachment=True,
download_name=empty_file,
mimetype='text/plain'), 200

# '/run-log'へのPOSTリクエストに対する操作

Expand Down

0 comments on commit 8300949

Please sign in to comment.