5-3Median_gpu.py

000: import cv2
001:
002: def __main():
003:
004: cap = cv2.VideoCapture(0, cv2.CAP_V4L)
005: cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
006: cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
007:
008: if not cap.isOpened(): # ビデオキャプチャー可能か判断
009: print(“Not Opened Video Camera”)
010: exit()
011:
012: while True:
013: ret, img = cap.read()
014: if not ret: # キャプチャー画像取得に失敗したら終了
015: print(“Video Capture Err”)
016: break
017:
018: # ここで処理を実行する
019: img = getGpuMedianBiur(img)
020:
021: cv2.imshow(“Final result”,img) # 画面表示
022: if cv2.waitKey(10) > -1:
023: break
024:
025: cap.release()
026: cv2.destroyAllWindows()
027:
028: def getGpuMedianBiur(img):
029: “””GPUを使用”””
030: # メディアンフィルター
031: wsize = 25 # ここの数字を変えると効果が変更できる
032:
033: gpuSrc = cv2.cuda_GpuMat() # CUDAで画像を使用する
034: gpuSrc.upload(img) # CUDAで編集できるようにイメージをアップロード
035:
036: # フィルターの実行
037: # createMedianFilterは8UC1だけ設定可能なので、ここではグレイスケールに変換しておく
038: gpuGray = cv2.cuda.cvtColor(src=gpuSrc, code=cv2.COLOR_BGR2GRAY)
039: filter = cv2.cuda.createMedianFilter(srcType=cv2.CV_8UC1, windowSize=wsize)
040: gpuDst = cv2.cuda_Filter.apply(filter, gpuGray)
041:
042: img = gpuDst.download() # 元のMatデータに戻す //cuda_Matでは表示できない
043: return img
044:
045: if __name__ == ‘__main__’:
046: print(cv2.__version__)
047:
048: __main()