友人のソフトウェアを紹介する
世界には自分を超える変態(=有能)が多数存在する
OpenCVを使うとすぐに実装できる。ほぼ上記URLのサンプル通り。
import cv2 import os def save_all_frames(video_path, ext='jpg'): if not os.path.exists(video_path): return cap = cv2.VideoCapture(video_path) if not cap.isOpened(): return dir_path = os.path.dirname(video_path) digit = len(str(int(cap.get(cv2.CAP_PROP_FRAME_COUNT)))) n = 0 while True: ret, frame = cap.read() if ret: filename = '{}_{}.{}'.format(os.path.splitext(os.path.basename(video_path))[0], str(n).zfill(digit), ext) cv2.imwrite(os.path.join(dir_path,filename), frame) n += 1 else: return save_all_frames(r"C:\Users\Masahiro\Downloads\file.mp4") save_all_frames(r"C:\Users\Masahiro\Downloads\file.mp4","png")
import urllib.request url = "https://test.test/test.pdf" filename = "test.pdf" urllib.request.urlretrieve(url, filename)
を参考にした。
2Dヒストグラムのbinデータを自力で用意し、pcolormesh
で描画する。その方法は
pythonのmatplotlibで2次元ヒストグラム(hist2d)のビンの値を直接操作する - 物理の駅 Physics station by 現役研究者
で解説している。
モルワイデ図法にするコードは plt.subplot(111, projection="mollweide")
import matplotlib.pyplot as plt import numpy as np def f(x, y, constant, mu_x, mu_y, sigma_x, sigma_y): return np.exp(-((x-mu_x) ** 2) / (2 * sigma_x ** 2)) * np.exp(-((y-mu_y) ** 2) / (2 * sigma_y ** 2)) * constant plt.figure() plt.subplot(111, projection="mollweide") lon = np.linspace(-np.pi, np.pi, 360) lat = np.linspace(-np.pi/2., np.pi/2., 180) Lon, Lat = np.meshgrid(lon, lat) arr = f(Lon, Lat, 1, 0, 0, 0.6, 0.2) arr += f(Lon, Lat, 0.5, 1.5, 0, 0.2, 0.2) plt.pcolormesh(Lon, Lat, arr, cmap='Reds', shading='auto') plt.grid(True) plt.savefig("projection_mollweide.pdf") plt.show()