5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ColabでOpenCV GPUを使いたい

Last updated at Posted at 2021-10-13

概要

  • ColabでOpencv GPUを使用する

それだけです。

はじめに

Colabは無料で使えて、なおかつGPUまで無料で使えるのがいいですよね。
ある時、**「OpencvのGPUバージョンも、もしかしたらColabで使えのでは?」**と思い、方法を探したときの備忘録になります。

ColabでOpencv GPU

pipでインストールできるopencv-pythonopencv-contrib-pythonでは、GPUは使えないですよね(もし、使えるのであれば僕の苦労が水の泡となってしまう)

なので、1からbuildする必要があります。
また、僕が実験した感じ、opencvのバージョンは最新じゃないとopencvが認識されませんでした。

参考にしたサイトは以下になります。

コード

まずは、opencvopencv_contribをクローンして来て、buildします。参考サイトのコードそのまま持ってきたので、DNNの部分とかは無くていいですね。

.sh
!git clone https://github.com/opencv/opencv
!git clone https://github.com/opencv/opencv_contrib
!mkdir /content/build
%cd /content/build
!cmake -DOPENCV_EXTRA_MODULES_PATH=/content/opencv_contrib/modules  -DBUILD_SHARED_LIBS=OFF  -DBUILD_TESTS=OFF  -DBUILD_PERF_TESTS=OFF -DBUILD_EXAMPLES=OFF -DWITH_OPENEXR=OFF -DWITH_CUDA=ON -DWITH_CUBLAS=ON -DWITH_CUDNN=ON -DOPENCV_DNN_CUDA=ON /content/opencv
!make -j8 install

割と時間がかかるので、終わったら以下のコマンドで確認

.py
import cv2
print(cv2.cuda.getCudaEnabledDeviceCount())
1

みたいに使えるデバイスの数が出てきたらOK

一応動作確認として動かしてみます。

.py
import cv2
from google.colab.patches import cv2_imshow

img_src = cv2.imread("images.png")
img_gpu_src = cv2.cuda_GpuMat()
img_gpu_src.upload(img_src)
img_gpu_dst = cv2.cuda.resize(img_gpu_src, (300, 300))
img_dst = img_gpu_dst.download()
cv2.imwrite("Ξガンダム.png", img_dst)

元画像 294×172
image.png

変換後 300×300
image.png

無事変換できました。
クシィガンダム...カッコよすぎますね。次の第二部が楽しみです。

#おわりに
今回はColabでOpencv GPUを使う方法を紹介させて頂きました。正直いつ使うかわからないですが、色々調べてやっとこさ出来たので、とりあえず執筆しました。誰かのお役に立てれば幸いです。

閃光のハサウェイが小説と同じ展開かそうでないか、気になりすぎて夜も眠れない...

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?