【登山/縦走】高尾山口⇔高尾山⇔城山⇔景信山
2021/08/04に高尾山周辺を縦走してきました。その記録ですーー
ルートは、高尾山口→(稲荷山ルート 1:00)→高尾山山頂→もみじ台→一丁平→城山山頂→小仏峠→景信山→(同経路)→高尾山山頂→(表参道コース)→高尾山口
装備
- https://www.camp-outdoor.com/tozan/soubi1.shtml あたりを参考に準備
- 高尾山⇔景信山は稜線上をあるくので日影が少なめ。日焼け止め必須
- 高尾山⇔城山で途中ぬかるんでいる。登山靴&軍手あったほうが良いかも
- 飲料は高尾山頂上の自動販売機で500mL /¥210で購入可能
時間
午後インターンがあったので結構急ぎ足で進んでいます。(他サイトの4/3倍くらい)
時刻 | 内容 |
---|---|
06:56 | 京王線で高尾山口到着 |
07:00 | 登山開始@稲荷山コース入口 |
07:27 | あずま屋 |
08:10 - 08:30 | 高尾山山頂(休憩&ごはん) |
08:50 | 一丁平 |
09:04 - 09:09 | 城山山頂 |
09:27 | 小仏峠 |
09:48 - 09:57 | 景信山山頂(休憩&ごはん) |
10:33 | 城山山頂 |
10:51 | 一丁平 |
11:15 | 高尾山山頂 |
11:54 | 下山! |
12:00 | 高尾山口 |
感想
- 高尾山山頂の景色きれいだけど、景信山の方が視界が開いていて好き
- 高尾山までは森の中を歩くので日焼けすることはあまりなさそう
- 反対に、高尾山⇔景信山は道が開けていて回りの山や市街地が見える。だが直射日光があたるのでクソ暑い
- 虫が全くいない(ハチはいたけど、クモやハエはいなかった)
- 昼頃になると高尾山周辺は人が多くなるので注意
- 登山客が多い分、高尾山口⇔高尾山の道は整備されていてけがをしたり遭難することはなさそう
- 高尾山⇔景信山も白テープ(枝に巻き付けてある)や道標に従っていれば迷いはしない。一部道がぬかるんでいたり滑りやすい所がある。
- タイムスケジュールを無理するべきではない
記録(写真)
高尾山口→登山開始まで
京王線で高尾山口まで行きます。駅から出て右側に進むと登山口が現れます。
登山口の途中にマップがいくつか書かれているので写真を撮っておきます
数百メートル進むとリフト乗り場の白い建物が現れるのでその左側の道を進むと、稲荷山コース登山口です!!
登山開始→あずま屋→高尾山山頂まで
登山開始から数分です。上りの階段と少し平坦な道が交互にきます
「なんか、『やまー』って感じがするね」「ボキャブラリーが貧困だね」()
そんな感じで、初心者でも難なく上れそうなコースを進んでいくと、あずま屋(展望台)を迂回するかどうかの三差路につきます。右側に行くと2分程度であずま屋につきます。
もちろん右を選択。
あずま屋につきました。平日の7:30なので人にはほとんど会いません。
周囲が木に囲まれているので眺めは微妙です。木々の間からすこしだけ、八王子の市街地が見えます。天気がいい日は新宿や池袋の高層ビル、筑波山まで見えるようですが、僕の視力が0.3なので見えませんでした。
ということで、景色を少し眺めてあずま屋を通り過ぎます。
あずま屋を過ぎると傾斜が緩やかになり、道が広くなった印象です。楽に進めます。たまに階段もありますが。
途中で6号路と繋がっていました。今回は稲荷山コースなので六号路はまた今度。
そのまま登っていきます。木道や木で作られた階段があり良く整備されているので歩きやすいです。
08:00頃、頂上の巻き道との交差点に差し掛かりました。
地図だとこんな感じです。
めっちゃ道がありますが、高尾山山頂を目指すので↓画像右端に見える石造りの階段を昇ります
高尾山山頂まであとはほぼ階段なので、10分ほど↓画像のような階段をただただ上ります。ジブリの森っぽい。
高尾山山頂(行き)
08:10ごろ、高尾山山頂につきました!!
このオリンピックのマークって使用するのにたしか許可がいるはずなのですが、、、取ったんでしょうね。登山というか半分観光地だしね。
さすがに8時は店は閉まっていました。人も家族ずれが3ペアと登山客が2人くらいでした。
オライリーのDocker本とごはん。
高尾山→城山
8:30, ごはんを食べ終えて高尾山山頂を一旦去ります。ここから一丁平を経て城山を目指しますー
高尾山山頂付近に、周囲の山に行くための所要時間が書かれていたので写真を撮っておいたもの:
高尾山→城山→景信山は稜線沿いを歩いていきます。なので日当たりも景色も最高にいい登山道です。
2021/08/04時点、 もみじ台に行くために道が3個あるのですが、そのうち一つが通行止めになっていました。(↓画像でバツを付けたもの)
と思ったらもみじ台そのものが立ち入り禁止になってた。
まあもみじ台に用はないのでそのまま直進します。途中でトイレがありました。こんな時間から清掃して頂いてるんですね、ありがてぇぇぇ
高尾山山頂から数分間は下りですが、その後は楽な道を進んでいきます~~
0848 小仏峠につきました。人は全くいません。
ここまできたら城山まであと0.9km
そういえば、小仏峠のトイレ?か何かの建物の近くの排水溝がもろ溝になっていたので穴に落ちないように気を付けて、、、↓
小仏峠をでてすぐ、展望台を通るか迂回するかの分かれ道がありますが、この展望台、結構長め良かったので行ってみるべきー
で、そうこうしているうちに稜線からすこし外れ山道に入り、傾斜がきつい上りが何本かありました。でもそれを過ぎるとまた開けた道にでてきて、気分爽快になります。
↑の画像の地点あたりから電柱が見え始めます。どうやら道にそって建てられているようです。城山山頂の建物用かな?そしたら城山山頂はすぐそこです。
少し歩けば山頂につきます!!
茶屋用の椅子と机が大量にあるので、そこですこし休憩します。今も営業してるんだろうか、、、?
カエデの木が広葉していました
城山→景信山
城山から景信山への道は、➀急な下り→②平坦な道→➂ちょっと上り→④最後200mが急な登り という感じでした。全体で片道1.9kmの道のりです。
最初の下りは楽です。道もきちんと整備されています。
途中、黒のドラム缶が3個置いてある場所に遭遇します(下写真)。見た感じ右側も道に見えますが(木の幹にしろのラインが入ってるし)、左側が正解です。画像右下に木の枝が3本並んでるのは立入禁止の道標かな?
途中ベンチがあったので休憩して、そのあと7分ほどあるくと子仏峠につきました。
小仏峠あたりで数箇所道がぬかるんでいました。前日雨だったせいもあると思いますが、対策は必要そうです。
そしてここから石/岩の地面が多くなってきます
を出て少したつと、また道が開けたところに出ます。
そして、残り200mの道標の後のこのコースでおそらく一番急な登りをへて、景信山到着です!
景信山
高尾山の10倍景色がきれいです!
高尾山はまだ周囲に木があって視界が遮られていますが、景信山は標高が高い分木々が無く、あたりを見回すことができます
記事冒頭のパノラマ画像も景信山で撮ったものです。
城山同様に茶屋の建物がありましたが、コロナの影響なのか平日だからなのか営業はしていませんでした。
景信山→高尾山
もと来た道を引き返すだけなので特に書くことはないです。
道中かべちょろ?とかげ?を見かけました。
そういえば、このコースではハチは数匹みましたが、それ以外の虫は全くいませんでした。蜘蛛(クモの巣もなかった)やブヨなど山にいそうな奴らが夏なのに現れなかった
高尾山→高尾山口
で、11:20ごろ、高尾山山頂に戻ってきました。昼前という事もあって、登山客ではなさそうな観光客でごった返していました。学校が夏休み期間中の平日という事もあって、子供連れの家族できているひとが多かったです。
本来ならば景色を楽しみながらゆっくり休憩したかったのですが、この日は16時からバイトがありました。12時までに下山する計画を立てていたので、地面がコンクリ―トで整備されている表参道コースをランニングで駆け下ります、、、
途中、数個の神社に出会いました。風鈴の音が心地よいです
↓のような急なカーブもあったりしますが、頑張って走ります。
そして、11:55に登山口に到着。
登山口から駅までは美味しそうな店が沢山あったのですが、全てスルーして高尾山口にダッシュ。
予定の12時ジャストに高尾山口に戻ってきました。12:09発新宿行きの電車になんとか間に合ったぜ!
Windows10のキャッシュを徹底的に削除する
Windows10のストレージが一杯になって空き容量が15GBとかになったので、キャッシュや一時ファイルなどを徹底的に削除してやりました。
これはその備忘録です。
Windows10全般の話
- C:\WINDOWS\Temp
- C:\Users\ユーザ名\AppData\Local\Temp
- ごみ箱
- C:/Windows.old
- これを消すとWindowsを前のバージョンに戻すことができなくなる
- C:\Windows\Prefetch
- Ctrl + Rを押して、prefetchと入力すると表示される。
C:\Users\ユーザ名\AppData\AppData/Localの中の見た感じ不要な削除する(自己責任で!!)
今回削除したフォルダは以下:
- LINE/Cache (20MB)
- LINE/bin/sharedフォルダの中に数字が並んでいるので、その中で数字が一番大きいもの以外 (1GB)
- Qtのdllファイルが大量にあった
- フォルダ名はバージョン番号?
- LINE/bin/old
- Google/Chrome/User Data/Crashpad
- pip/cache (1GB)
- slack/フォルダの「app-[バージョン番号]」でバージョン番号が最新のやつ以外のもの(200MB)
- CrashDumps (ちょっと)
Windowsの「設定」から削除
Windowsの設定アプリを開く
- 「システム」→「記憶域(ストレージ)」→「一時ファイル」を選択
- 適切なチェックボックスにチェックを入れて「ファイルの削除」を実行
(Windows Update関連のファイル約4GBを削除できたので優秀)
ディスクのクリーンアップ
上記のWindowsの「設定」アプリからの同様のことができますが、それだけだと数十MBファイルがまだ残っていたので、↓のやり方も効果はありそう
- 「Windows + R」(ファイル名を指定して実行)から「cleanmgr.exe」を実行する(ディスクのクリーンアップ)
- 「システムファイルのクリーンアップ」ボタンを押す
- 必要ないファイルを選択して削除。
FileSumを使う
FileSumを使うと、フォルダの容量を一覧表示させることができる。
www.vector.co.jp
Linuxでいうncdu コマンドみたいなもの
容量の大きいファイルから削除していくことができるので効率的。
各アプリのキャッシュを削除
FireFox
- C:\Users\ユーザー名\AppData\Local\Mozilla\Firefox\Profiles\ を探して削除
- FireFoxでURLを入力するところに、「about:cache」と打つと、キャッシュファイルの場所を表示してくれる。
- FireFox上でCtrl + Bをして履歴を表示→削除
とか色々やっていたが geekでアプリ容量を見ると3GBくらいだったので、アンインストール&再インストールした
再インストールするとアプリ容量が430MBくらいになった。アンインストールしてもクッキーデータやブックマークは残っているらしく、再インストール後も復元されたので、定期的にやると良さそう
AviUtl
- (hogehoge).lwiファイルをExplorerのファイル検索削除
Reaper
- (hoge).reapeaksファイルを削除
- REAPER設定→一般→パスの「Alternative waveform peak cache path」(一番下)が設定されている場合は、そのディレクトリ内にreapeaksがまとまっているので、そこを削除
Davinch Resolve
- メニューバーの「再生」→「レンダーキャッシュの削除」→「全て」
- メニューバーの「ファイル」→「プロジェクトの設定」→「マスター設定」→「作業フォルダ」の中の「ギャラリースチルの場所」にキャッシュファイルがある
- が、そこまで容量が大きくなかったので、あまり意味はないかも。
Solidworks
- Solidworks Downloadフォルダを削除した(自己責任で!)
- 僕の環境の場合はC/Users/ユーザー名/Documents/SolidWorks Download
- 削除後もアセンブリを開いたり編集したりはできた。それ以外のことは知らん。
Python+OpenCVで画像処理 勉強会第一回(物体認識、背景削除)
にゃんぱすー!
大学の某サークルの画像処理関連の勉強会の内容です。
この記事では、以下の内容について語っていきます
- Python + OpenCVの環境構築
- OpenCVの基本的な使い方
- 画像の読み込み・表示
- カメラ画像の読み込み・表示
- 各種エフェクト
- 二値化
- グレースケール変換
- エッジ抽出
- ブラー(ぼかし)
- 色空間変換(RGB↔HSV等)
- カメラの背景画像を削除する
- 物体検知(機械学習を使わずに)
プログラム全体はGitHubの↓レポジトリに上がっているよ
github.com
ではいこう!
環境構築
基本的にWindowsの前提で話します。Macの人は頑張って下さい(ネット上に記事が大量にあるはず)
Pythonのインストール
自分のPCでPythonプログラムが実行できるような環境を整えます
上記リンクから、最新のPythonをダウンロードします。2021/6/5時点では、Python3.9.5が最新なので、それをクリックします。
そして、Files節の自分のOSに合ったインストーラーをダウンロードします。
- Windows→「Windows installer (64-bit)」
- intel製Mac→「macOS 64-bit Intel installer」
- M1 Mac→「macOS 64-bit universal2 installer」
かなぁ。(間違ってたらごめんなさい)
インストール中に、「Add Python 3.x to PATH(Pythonを環境変数に追加する)」のような表示が出たらチェックすることを忘れずに!!
インストールが正常に終わっていると、ターミナル(Windowsの人はデフォルトではコマンドプロンプト。でもWindows Terminalを入れておくことをおすすめします)で以下のコマンドを実行してみて下さい。
$ python --version Python 3.8.5 $ pip --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
※「$」マークは「これはコマンドだよ」というのを表す記号なので、入力しないで下さい。
※上のようにしてエラーが出る場合はpython→python3, pip→pip3に置き換えて見て下さい
上のように、バージョンが表示されればOKです
pipで必要モジュールのインストール
では、そのpipを使って画像処理用ライブラリ「OpenCV」と行列計算ライブラリ「numpy」をインストールします。
$ pip install numpy $ pip install opencv-python $ pip install opencv-contrib-python
1. 画像を表示してみる
以下のプログラムを実行して下さい。
# https://github.com/20niship/python_opencv_lecture/blob/master/1_1_show_img%20copy.py # OpenCVライブラリを読み込む import cv2 # 画像を読み込んでimg変数に格納 # print(img)をするとわかるが、imgはw * h * 3の大きさのnumpy行列 img = cv2.imread("cat.jpg") while True: # testウィンドウにimgを表示 cv2.imshow("test", img) # 10ms待つ。その間になにかキーボードが押されたらその数値を返してkeyに代入 key = cv2.waitKey(10) # print(key) # ESCキーやQキーが押された場合は終了する if key == 27 or key == 113: break
プログラムの実行の仕方は、
- 「hogehoge.py」みたいに「.py」拡張子で名前を付けて保存して下さい。
- pyファイルと同じ位置にcat.jpgという名前で適当な画像をおいて下さい。(この記事ではこれを使います)
- コマンドプロンプトで「python hogehoge.py」のように「python [スクリプトファイル名]」と打って、プログラムを実行
以下のように「test」Windowに猫の画像が表示されたでしょうか?
説明はスクリプトに書いてあるので読んでね。それでもわからない部分はググってね
2. 各種エフェクト
imread関数で読み込んだ画像オブジェクトに、ぼかしエフェクトを加えてみます。
以下の一文をimread関数とimshow関数の間に追加して下さい。
img = cv2.blur(img,(51,51))
「(51, 51)のサイズでimgにブラー(ぼかし)を加えて、結果をimgに代入する」、という動作
以下の画像のようになったでしょうか?
blur関数の第二引数を色々変えてみると、ブラーの強さが変化します
blur関数が何をやっているのかは公式ドキュメントを見てね(行列をかけてる)
今度は、キーボードの入力で適応されるエフェクトが変化するスクリプトを作ってみます。
こーんな感じ。
python_opencv_lecture/1_2_effects.py at master · 20niship/python_opencv_lecture · GitHub
import cv2 import numpy as np # 行列計算ライブラリ、Numpyをインポート key = 0 while True: img = cv2.imread("cat.jpg") # image read # 画像にエフェクトをかけていく if key is ord('a'): # Aが押された時 img = cv2.blur(img,(15,31)) # 画像をぼかす(15, 35)はX,Y方向のぼかす大きさ elif key is ord('g'): img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # グレースケールにする elif key is ord('e'): img = cv2.Canny(img,60,200) # 輪郭抽出 elif key is ord('x'): # 油絵エフェクト # 第二引数はsize, 第三引数はdynRatio img = cv2.xphoto.oilPainting(img, 7, 2, cv2.COLOR_BGR2Lab) elif key is ord('h'): # 色空間の変換(RGB -> HSV) img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) elif key is ord('b'): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # グレースケールにする ret3,img = cv2.threshold(gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) # 大津の二値化 # 上のようなエフェクト組み合わせて色々作っていくよ # 例1:グリーンバック elif key is ord('w'): hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 色空間の変換(RGB -> HSV) height, width, channel = img.shape print(hsv[10, 10]) for x in range(width): for y in range(height): h, s, v= img[y, x] if 30 < h < 70 and s > 50: # 緑色の部分は img[y, x]=[255, 0, 0] # 赤色にする # 例2:自力で輪郭抽出 elif key is ord('v'): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # グレースケール化 ret3,img_binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) # 二値化 img_binary = cv2.bitwise_not(img_binary) # ネガポジ反転(findContours関数は白い部分を検出するため) contours, hierarchy = cv2.findContours(img_binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # 輪郭検出 img = cv2.drawContours(img, contours, -1, (0, 255, 0), 5) # 輪郭描画 cv2.imshow("test", img) key_tmp = cv2.waitKey(10) if key_tmp > 0: key = key_tmp if key == 27 or key == 113: break
プログラムを実行して、
押したキー | 内容 | 出力画像 |
---|---|---|
A | ブラー(平滑化) | |
G | グレースケール(白黒化) | |
E | エッジ抽出 | |
X | 油絵エフェクト(こんなのもある。面白いなぁ) | |
H | 色空間をRGBからHSVにする | |
B | 大津の二値化(白黒二色にする) | |
W | 緑っぽい部分を青色(RGB(0, 0, 255)) にする | |
V | 輪郭を描画(自作スクリプト) |
という処理を実行します。
3. カメラ画像を取得
PCにカメラがあれば(もしくはUSBカメラ等が繋がっていれば)、そのカメラ映像を表示することもできます。
import cv2 import numpy as np # 行列計算ライブラリ、Numpyをインポート # VideoCapture オブジェクトを取得 cap = cv2.VideoCapture(0) if cap.isOpened(): # get vcap property width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) # float `width` height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) # float `height` # 以下の方法でも可 # width = cap.get(3) # float `width` # height = cap.get(4) # float `height` fps = cap.get(cv2.CAP_PROP_FPS) print("camera found!") print(f"width={width}, height={height}, fps={fps}") else: print("カメラが取得できない!") while(True): ret, img = cap.read() # 現在のカメラ画像を取得 # ここにエフェクトを追加していく cv2.imshow('camera',img) key = cv2.waitKey(10) if key == 27 or key == 113: break