0818 개발일지

이나겸·2022년 8월 18일
0

1. 개발기록

detect 되고나서 마지막 exp 파일의 crops > plate에서 마지막 5개의 파일만 Flask로 전송하려 한다.
파이썬에서 subprocess를 사용하면 내가 하려는 원격지로의 파일 이동만 shell 작업을 할 수 있다고 한다.
원격지로 파일 이동하는 데 성공했고, 아래 명령어를 사용했는데 원래 원격전송은 scp를 사용하는데,
sshpass를 사용해서 비밀번호를 입력하는 단계를 건너뛰고 한줄로 실행이 가능하다.

sshpass -p [비밀번호] scp -P [포트] ./cam.py root@[원격IP]:[원격경로]

원래는 라즈베리파이에서 공개키를 만들어서 구름IDE 컨테이너에 authorized_keys 에 등록하면 비밀번호 확인하지 않는다고 하여, 공개키를 만들고 등록하는 과정에서 구름IDE에서 ls -al로 파일들을 확인해보니 전부 400이었다.. 나만 읽을 수 있는 상태..
아무리 애써봐도 안되서 이대로 포기해야하나 하다가 안 먹히던 sshpass를 다시 적용해보니 잘 됨.

subprocess.call(f'sshpass -p [비밀번호] scp -P [포트] {image[0]} {image[1]} {image[2]} {image[3]} {image[4]} root@[원격IP]:[원격경로]', shell=True)

subprocess.call로 쉘 명령어를 입력하면 실행된다!

2. 느낀점

이미지를 detect 하는 threshold 값을 0.9에서 0.85로 낮춰도 detect이 많이 되는편은 아니었다.
0.85보다 높은 값으로 detect 될 때만, runs > detect 에 저장되게 했다.
detect 되었을 때 몇개가 저장되든 끝에서 5개까지만 전송되게끔 했더니 범위를 벗어났다는 경고를 보게 되었다. 그래서 if문을 걸어서 10개까지 저장시킨 다음에 끝에서 5개를 가져오게 했다.
여기서 또 문제가.. 일단 기본적으로 listdir로 불러왔을 때 순서대로 리스트화 되는 게 아니어서 sorted가 필요했다. sorted 한 다음에 전송했더니 제대로 5, 6, 7, 8, 9 파일이 전송되는 것을 확인할 수 있었다.

0개의 댓글