4-1Resize_default_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 ret == False: # キャプチャー画像取得に失敗したら終了
015: print(“Video Capture Err”)
016: break
017:
018: # ここで処理を実行する
019: img = getGpuResize(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 getGpuResize(src):
029: “””GPUを使用”””
030: global gpuSrc
031: global gpuDst
032:
033: basePixSize = 720 # 縦横で大きい辺の変更したいサイズ
034: height = src.shape[0]
035: width = src.shape[1]
036:
037: largeSize = max(height, width) # 大きい方の辺のサイズ
038: resizeRate = basePixSize / largeSize # 変更比率を計算
039:
040: gpuSrc.upload(src) # CUDAで編集できるようにイメージをアップロード
041:
042: gpuDst = cv2.cuda.resize(gpuSrc, (int(width * resizeRate), int(height * resizeRate)))
043:
044: dst = gpuDst.download() # 元のMatデータに戻す //cuda_Matでは表示できない
045:
046: return dst
047:
048: if __name__ == ‘__main__’:
049: print(cv2.__version__)
050:
051: gpuSrc = cv2.cuda_GpuMat() # CUDAで画像を使用する
052: gpuDst = cv2.cuda_GpuMat()
053: __main()