차창 영상에서 가속도 찾기!?(yahoo hackday2021)
개시하다
처음으로 해킹데이에 참가한 지 일주일이 지났다.
배운 것을 정리하기 위해 글을 쓰기로 결심했고, 그동안 보살핌을 받은 Qiita의 기사를 쓰려고 노력했다.
처음 쓰는 거라 불완전한 부분이 있을 수 있으니 봐주세요.
카탈로그
이번에 소개한 기술 실장에서는 영상(차창의 풍경)에서 어느 정도의 가속도를 예측했다. 이번에는 제가 그것을 소개하는 것을 허락해 주십시오. 창의력은 애니메이션에서 일정 시간마다 정지화를 추출하여 시간적으로 인접한 이미지의 유사도를 찾아 속도를 추측하는 것이다. 유사도 높음→잘 움직이지 않음→느림 유사도 낮음→빠르게 이동→빠르게 이번에 원하는 것은 가속도이기 때문에 유사도가 어떻게 변하는지에 주목해 대략적인 가속도를 추측했다. 애니메이션에서 정지 그림 추출하기 extract_images.py import cv2 import os def save_all_frames(video_path, dir_path, basename, ext='jpg'): cap = cv2.VideoCapture(video_path) if not cap.isOpened(): return os.makedirs(dir_path, exist_ok=True) base_path = os.path.join(dir_path, basename) digit = len(str(int(cap.get(cv2.CAP_PROP_FRAME_COUNT)))) n = 0 while True: ret, frame = cap.read() if ret: cv2.imwrite('{}_{}.{}'.format(base_path, str(n).zfill(digit), ext), frame) n += 1 print(n) else: return save_all_frames('video_path', 'dir_path', 'sample_video_img') save_all_frames('video_path', 'dir_path', 'sample_video_img', 'png') video_path = 'video_path' dir_path = 'output_path' save_all_frames(video_path, dir_path, 'train') 보도를 참고했기 때문에 중추 부분은 참고 문헌을 참고하세요. 이후의 편의를 위해 저장된 파일 이름을 변경했습니다. 싱크로율 을 추측 하다 hist_matching.py import cv2 import os def add_zeros(path_number): if (len(path_number) == 1): return '000' + path_number elif (len(path_number) == 2): return '00' + path_number elif (len(path_number) == 3): return '0' + path_number else: return path_number IMG_DIR = os.path.abspath(os.path.dirname(__file__)) + 'data_path' IMG_SIZE = (200, 200) temp = 0 for i in range(6901): # print(i) j = i + 1 i = str(i) j = str(j) i = add_zeros(i) j = add_zeros(j) target_img_path = IMG_DIR + 'train_' + i + '.jpg' target_img = cv2.imread(target_img_path) target_img = cv2.resize(target_img, IMG_SIZE) target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256]) comparing_img_path = IMG_DIR + 'train_' + j + '.jpg' # print('FILE: %s : %s' % ('train_' + i + '.jpg', 'train_' + j + '.jpg')) comparing_img = cv2.imread(comparing_img_path) comparing_img = cv2.resize(comparing_img, IMG_SIZE) comparing_hist = cv2.calcHist([comparing_img], [0], None, [256], [0, 256]) ret = cv2.compareHist(target_hist, comparing_hist, 0) # print(file, ret) print(ret - temp) temp = ret 보도를 참고했기 때문에 중추 부분은 참고 문헌을 참고하세요. 데이터의 파일 이름을 변경했습니다. 아니오, 앞의 제로 매립 함수의 존재를 알고 있지만, 늘 좋지 않다고 생각해서 스스로 했습니다 싱크로율 을 추측 하다 analysis.py import matplotlib.pyplot as plt import time y = [] input_file = open('speed.txt', 'r', encoding = 'utf_8') i = 0 while True: line = input_file.readline() if line: i += 1 y.append(1 - float(line)) time.sleep(0.33) print(1 - float(line)) else: break # RGB 히스토그램당 계산 및 드로잉 for i, channel in enumerate(colors): histgram = cv2.calcHist([img_a], [i], None, [256], [0, 256]) plt.plot(histgram, color=channel) plt.xlim([0, 256])
그래프와 이미지를 비교해 보면 좋은 느낌이 가장 흥분되는 순간이다.
제품(실제 발표) 더 기술력이 있다면,, (반성) 영상과 도표를 비교해 보면 실제로 멈췄지만 속도 변화가 있다는 것을 깨닫는 부분도 있다.(애니메이션 2:30, 차트 x:3500 정도) 정차하던 중 맞은편 전차가 출발해 유사도가 달라졌기 때문이다. 나도 가속도의 방향을 추구하고 싶다. 농담이 지나쳐서 가장 중요한 기술을 전달하지 못했다. 참고 문헌
Reference
이 문제에 관하여(차창 영상에서 가속도 찾기!?(yahoo hackday2021)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuuya08110/items/b600c41a36751801dbc3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)