用python做影象處理。有些特殊需求需要用雙重for迴圈遍歷影象來操作例如下面**
影象大小為1024 * 2048 .主函式中測試結果如下def getbinarizationimg(simg, targeth, targetw):
print(simg.shape)
h,w,c = simg.shape
box = np.zeros((h, w),dtype=np.uint8)
pole = np.zeros((h, w),dtype=np.uint8)
for u in range(h):
for v in range(w):
if simg[u][v][0] == 0 and simg[u][v][1] == 220 and simg[u][v][2] == 220:
box[u][v] = 255
img_box = cv2.resize(box, (targetw, targeth), fx=0, fy=0,
interpolation=cv2.inter_nearest)
return img_box
直接瘋掉的節奏啊。後來看到kcf演算法中有個加速方法,拿來用用elapse_time = 3.5969557762145996
elapse_time = 3.608659029006958
elapse_time = 3.667614459991455
elapse_time = 3.546481132507324
from numba import jit
@jit()
def getbinarizationimg(simg, targeth, targetw):
print(simg.shape)
h,w,c = simg.shape
box = np.zeros((h, w),dtype=np.uint8)
pole = np.zeros((h, w),dtype=np.uint8)
for u in range(h):
for v in range(w):
if simg[u][v][0] == 0 and simg[u][v][1] == 220 and simg[u][v][2] == 220:
box[u][v] = 255
img_box = cv2.resize(box, (targetw, targeth), fx=0, fy=0,
interpolation=cv2.inter_nearest)
return img_box
效能差不少啊。elapse_time = 0.29776477813720703
elapse_time = 0.0017366409301757812
elapse_time = 0.001975536346435547
elapse_time = 0.001725912094116211
elapse_time = 0.0018794536590576172
雙重for迴圈的優化
demo如下 public class testm private static void aaa system.out.println system.currenttimemillis s private static void bbb system.out.println system.curr...
雙重for迴圈
雙重for迴圈就是在乙個for迴圈裡在巢狀另乙個for迴圈,ji 即兩個迴圈巢狀,還有多重迴圈巢狀的情況,但用的比較少,一般常用的是兩個迴圈巢狀,很少使用多重迴圈,因為for迴圈多了會導致 執行的效率低,而且容易宕機,多迴圈中的總迴圈次數是相乘的,巢狀幾次後幾何級數增長,因此通常情況下在迴圈多次巢狀...
雙重for迴圈
雙重for迴圈 1 概述 很多情況下,單層for迴圈並不能滿足我們的需求,比如我們要列印乙個5行5列的圖形,列印乙個倒直角三角形等,此時就可以通過迴圈巢狀來實現 迴圈巢狀是指在乙個迴圈語句中再定義乙個迴圈語句的語法結構,例如在for迴圈語句中,可以再巢狀乙個for迴圈,這樣的for迴圈語句我們稱之為...