В пакете cv2 есть перечисления, определенные как:
aruco.DICT_4X4_50
aruco.DICT_5X5_50
и т. Д., Сопоставленные с 0, 1, 2, .... Я хочу написать скрипт, в котором пользователь указывает эти перечисления через командную строку, а код делает то, что должен, и мне интересно, есть ли элегантный способ сделать это. Сейчас у меня есть парсер, который проверяет все возможные перечисления, что плохо, потому что если перечисления обновляются в пакете, мой код не сможет их использовать.
В идеале, я просто хотел бы посмотреть, соответствует ли «строка», предоставленная через командную строку, действительному перечислению или нет, а затем перенаправить ее в функцию, которая использует перечисление.
Вот минимальный пример:
from cv2 import aruco
import sys
def create_board(arucodict):
try:
aruco_dict = aruco.getPredefinedDictionary(arucodict)
except:
print('WRONG')
return None, None
squareLength = 10
markerLength = 7
board = aruco.CharucoBoard_create(4, 4, squareLength, markerLength, aruco_dict)
imboard = board.draw((500, 500),0,1)
arucoParams = aruco.DetectorParameters_create()
return imboard, arucoParams
if __name__=="__main__":
# User specifies the aruco dictionary he wants
# Expects aruco.DICT_4X4_50, or aruco.DICT_5x5_50 etc
arucodict = sys.argv[1]
imb1, ap1 = create_board(arucodict) enter code here