Linting
This commit is contained in:
@@ -1,51 +0,0 @@
|
||||
import tempfile
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
|
||||
import shenzhen_solitaire.card_detection.configuration as configuration
|
||||
import shenzhen_solitaire.solver.solver as solver
|
||||
from shenzhen_solitaire.card_detection.board_parser import parse_board
|
||||
|
||||
benchmark_files = [
|
||||
"pictures/20190809172206_1.jpg",
|
||||
"pictures/20190809172213_1.jpg",
|
||||
"pictures/20190809172219_1.jpg",
|
||||
"pictures/20190809172225_1.jpg",
|
||||
"pictures/20190809172232_1.jpg",
|
||||
"pictures/20190809172238_1.jpg",
|
||||
]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
for benchmark in benchmark_files:
|
||||
print(f"{benchmark}:")
|
||||
read_file_time = time.time()
|
||||
|
||||
image = cv2.imread(benchmark)
|
||||
load_config_time = time.time()
|
||||
print(f"Load image: {load_config_time - read_file_time:5.2f}")
|
||||
|
||||
conf = configuration.load("test_config.zip")
|
||||
parse_board_time = time.time()
|
||||
print(f"Load config: {parse_board_time - load_config_time:5.2f}")
|
||||
|
||||
board = parse_board(image, conf)
|
||||
solve_time = time.time()
|
||||
print(f"Parse image: {solve_time - parse_board_time:5.2f}")
|
||||
|
||||
solution_iterator = next(solver.solve(board, timeout=10), None)
|
||||
finished_time = time.time()
|
||||
print(f"Solve board: {finished_time - solve_time:5.2f}")
|
||||
|
||||
assert board.check_correct()
|
||||
if solution_iterator is None:
|
||||
print("Solution timed out")
|
||||
else:
|
||||
print(f"Solved in {len(list(solution_iterator))} steps")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
35
benchmark/timing.py
Normal file
35
benchmark/timing.py
Normal file
@@ -0,0 +1,35 @@
|
||||
import multiprocessing
|
||||
import tempfile
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
|
||||
import shenzhen_solitaire.card_detection.configuration as configuration
|
||||
import shenzhen_solitaire.solver.solver as solver
|
||||
from shenzhen_solitaire.card_detection.board_parser import parse_board
|
||||
|
||||
from .util import run_benchmark
|
||||
|
||||
benchmark_files = [
|
||||
"pictures/20190809172206_1.jpg",
|
||||
"pictures/20190809172213_1.jpg",
|
||||
"pictures/20190809172219_1.jpg",
|
||||
"pictures/20190809172225_1.jpg",
|
||||
"pictures/20190809172232_1.jpg",
|
||||
"pictures/20190809172238_1.jpg",
|
||||
]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
with multiprocessing.Pool() as pool:
|
||||
result = pool.imap_unordered(
|
||||
run_benchmark, [Path(benchmark) for benchmark in benchmark_files]
|
||||
)
|
||||
for current_result in result:
|
||||
print(current_result)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
41
benchmark/unsolved.py
Normal file
41
benchmark/unsolved.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import multiprocessing
|
||||
import tempfile
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
|
||||
import shenzhen_solitaire.card_detection.configuration as configuration
|
||||
import shenzhen_solitaire.solver.solver as solver
|
||||
from shenzhen_solitaire.card_detection.board_parser import parse_board
|
||||
|
||||
from .util import run_benchmark
|
||||
|
||||
benchmark_files = [
|
||||
"pictures/unsolved/tmp1ern14si.png",
|
||||
"pictures/unsolved/tmp2_0vn4tl.png",
|
||||
"pictures/unsolved/tmp32jmcnfp.png",
|
||||
"pictures/unsolved/tmpcml2ldfl.png",
|
||||
"pictures/unsolved/tmpd7rbwwdb.png",
|
||||
"pictures/unsolved/tmpdudxuw0s.png",
|
||||
"pictures/unsolved/tmpeplvz9bk.png",
|
||||
"pictures/unsolved/tmph_esy__3.png",
|
||||
"pictures/unsolved/tmpn95ueb7_.png",
|
||||
"pictures/unsolved/tmpqzay4q08.png",
|
||||
"pictures/unsolved/tmputbych59.png",
|
||||
"pictures/unsolved/tmpx4uo6pg3.png",
|
||||
]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
with multiprocessing.Pool() as pool:
|
||||
result = pool.imap_unordered(
|
||||
run_benchmark, [Path(benchmark) for benchmark in benchmark_files]
|
||||
)
|
||||
for current_result in result:
|
||||
print(current_result)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
36
benchmark/util.py
Normal file
36
benchmark/util.py
Normal file
@@ -0,0 +1,36 @@
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import cv2
|
||||
|
||||
import shenzhen_solitaire.card_detection.configuration as configuration
|
||||
import shenzhen_solitaire.solver.solver as solver
|
||||
from shenzhen_solitaire.card_detection.board_parser import parse_board
|
||||
|
||||
|
||||
def run_benchmark(benchmark: Path) -> str:
|
||||
result = ""
|
||||
result += f"{benchmark}:\n"
|
||||
read_file_time = time.time()
|
||||
image = cv2.imread(str(benchmark))
|
||||
load_config_time = time.time()
|
||||
result += f"\tLoad image: {load_config_time - read_file_time:5.2f}\n"
|
||||
|
||||
conf = configuration.load("test_config.zip")
|
||||
parse_board_time = time.time()
|
||||
result += f"\tLoad config: {parse_board_time - load_config_time:5.2f}\n"
|
||||
|
||||
board = parse_board(image, conf)
|
||||
solve_time = time.time()
|
||||
result += f"\tParse image: {solve_time - parse_board_time:5.2f}\n"
|
||||
|
||||
solution_iterator = next(solver.solve(board, timeout=10), None)
|
||||
finished_time = time.time()
|
||||
result += f"\tSolve board: {finished_time - solve_time:5.2f}\n"
|
||||
|
||||
assert board.check_correct()
|
||||
if solution_iterator is None:
|
||||
result += "\tSolution timed out\n"
|
||||
else:
|
||||
result += f"\tSolved in {len(list(solution_iterator))} steps\n"
|
||||
return result
|
||||
Reference in New Issue
Block a user