teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

タイポ修正

2021/01/16 09:43

投稿

Surpris
Surpris

スコア106

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  置き換えの処理の部分を高速化したいとのことなので、その部分だけ対象として、次のような実装が考えられます。
2
- (`cv2.imread(file_path`) の部分は除いています。)
2
+ (`cv2.imread(file_path)`) の部分は除いています。)
3
3
 
4
4
  ①for-loop と if 文を除く:
5
5
  ```Python

1

import 文の追加

2021/01/16 09:43

投稿

Surpris
Surpris

スコア106

answer CHANGED
@@ -1,11 +1,12 @@
1
1
  置き換えの処理の部分を高速化したいとのことなので、その部分だけ対象として、次のような実装が考えられます。
2
- (cv2.imread の部分は除いています。)
2
+ `cv2.imread(file_path`) の部分は除いています。)
3
3
 
4
4
  ①for-loop と if 文を除く:
5
- ```
5
+ ```Python
6
6
  import cv2, math
7
7
  import scipy.stats as sstats
8
8
 
9
+
9
10
  def func1(bgr):
10
11
  """for-loop と if 文を除く
11
12
  """
@@ -18,7 +19,13 @@
18
19
  ```
19
20
 
20
21
  ②numba.jit を使用する:
21
- ```
22
+ ```Python
23
+ import cv2
24
+ import scipy.stats as sstats
25
+ import numpy
26
+ import numba
27
+
28
+
22
29
  @numba.jit("void(u1[:,:,:], i4[:,:], i4[:,:], i4[:,:], i4, i4, i4)")
23
30
  def func2_numba(bgr, b, g, r, mode_b, mode_g, mode_r):
24
31
  """numba.jit を適用する処理
@@ -39,8 +46,14 @@
39
46
  func2_numba(bgr, b, g, r, mode_b, mode_g, mode_r)
40
47
  return bgr
41
48
  ```
49
+
42
50
  オリジナルの実装を `func0` としておきます(実装は次の通り):
43
- ```
51
+ ```Python
52
+ import cv2
53
+ import scipy.stats as sstats
54
+ import numpy
55
+
56
+
44
57
  def func0(bgr):
45
58
  """オリジナルの実装
46
59
  """
@@ -66,7 +79,7 @@
66
79
  処理速度は ② > ① >> original となりました。
67
80
  ※関数のコンパイル時間は除いています。
68
81
 
69
- ```
82
+ ```Python
70
83
  %timeit func0(bgr) # 1.84 s ± 46 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
71
84
  %timeit func1(bgr) # 34.6 ms ± 1.16 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
72
85
  %timeit func2(bgr) # 30.8 ms ± 158 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)