#はじめに
前回の記事
でOpenCVによる画像のフィルター処理を試してみた折に、その高速な処理に驚き、手持ちのもう一台のPC(Macbook Air)でやってみることにしました。
Macbookのスペックは以下のようなものです。
MacbookAir (M1 2020)
チップApple M1
メモリ 8GB
OS macOS Monterey 12.1
#環境構築
@ShinnnosukeNakamuraさんの記事を参考に、環境を作りました。
Pythonは3.9にUpgradeし、途中の
conda create -n py37_opencv python=3.7 anaconda
の部分は
conda create -n py39_opencv python=3.9 anaconda
のようにしました。
#平滑化処理をやってみる
Windowsのときと同じように、1920 x 1200の約230万画素、グレースケール画像の3x3近傍の平滑化処理をやってみます。以下のコードを使用します。20回連続して処理を行い、処理時間の平均を表示します。
import cv2
import time
src = cv2.imread('test1.bmp',-1)
loopnum = 20
skip = 4
total = 0
for i in range(loopnum+skip):
start = time.perf_counter()
dst = cv2.blur(src,(3,3))
end = time.perf_counter()
if ( i > skip-1):
print(str(end - start))
total += end - start
print('Ave:',total/loopnum)
cv2.imwrite('test1_result.bmp',dst)
実行結果は以下の通りです。
0.00057787499999995
0.000581542000000046
0.000579166999999936
0.0005787919999999946
0.0005787080000000389
0.0005786249999999438
0.0005788749999999787
0.0005826669999999812
0.0005792499999999201
0.000578540999999988
0.0005786660000000055
0.0005764590000000291
0.0005809999999999427
0.0005792909999999818
0.0005787080000000389
0.0005784589999999756
0.0005784170000000532
0.0005783750000000198
0.0005671660000000633
0.0005787080000000389
Ave: 0.0005784645499999963
#0.6ミリ秒!
速っ!
( д) ゚ ゚
結果画像はしっかりBlurしています。
ちなみに、Windowsでやった時はCore-i5@2.6GHzのマシンで3.3ミリ秒かかっていました。
M1 MacでのOpenCVはいま、過渡期のようで、この結果をどう捉えるのが正解か、いまいちわからないところがあります。そのあたりのことがわかってきたら、このページでお知らせしようと思います。
*iPhoneでPython + OpenCVの環境がある、という記事を読んだのでやってみました。