5-2Gaussian_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 = getGpuGaussian(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 getGpuGaussian(img):
029: “””GPUを使用”””
030: global gpuImg
031:
032: # ガウシアンフィルタ
033: ksize = (25, 25) # 正の奇数で指定する(ここの数字を変えると効果が変更できる)
034: # フィルターの実行
035:
036: gpuImg.upload(img) # CUDAで編集できるようにGPUへアップロード
037:
038: filter = cv2.cuda.createGaussianFilter(srcType=cv2.CV_8UC3, dstType=cv2.CV_8UC3, ksize=ksize, sigma1=0, sigma2=0)
039: gpuImg = cv2.cuda_Filter.apply(filter, gpuImg)
040:
041: img = gpuImg.download() # GPUから元のMatデータに戻す //cuda_Matでは表示できない
042:
043: return img
044:
045: if __name__ == ‘__main__’:
046: print(cv2.__version__)
047:
048: gpuImg = cv2.cuda_GpuMat() # GPUで画像を使用する
049: __main()