2-2Hsv_gpu.py

000: import cv2
001: import numpy as np
002:
003: def __main():
004: img = createImage()
005: cv2.imshow(‘Orignal’, img)
006:
007: # ここで処理を実行する
008: img = getGpuGray(img)
009:
010: cv2.imshow(‘Final result’, img)
011: cv2.waitKey(0)
012: cv2.destroyAllWindows()
013:
014: def getGpuGray(img):
015: “””GPUを使用”””
016: gpuImg = cv2.cuda_GpuMat() # GPUで画像を使用する準備
017: gpuImg.upload(img) # GPUで編集できるようにイメージをアップロード
018: # HSVに変換する
019: gpuImg = cv2.cuda.cvtColor(gpuImg, cv2.COLOR_BGR2HSV_FULL) # cv2.COLOR_BGR2HSV_FULLオプションだとH:256階調に対応
020: img = gpuImg.download() # 元のMatデータに戻す //cuda_Matでは表示できない
021:
022: return img
023:
024: def createImage():
025: “””画像処理用のデータを生成”””
026: size = (400, 600, 3) # 縦480ピクセル 横640ピクセル 3チャンネル
027: img = np.zeros(size, dtype=np.uint8)
028:
029: red = np.array([0., 0., 255.])
030: green = np.array([0., 255., 0.])
031: blue = np.array([255., 0., 0.])
032:
033: cyan = np.array([255., 255., 0.])
034: magenta = np.array([255., 0., 255])
035: yellow = np.array([0., 255., 255.])
036:
037: cv2.rectangle(img=img, pt1=(0, 0), pt2=(200, 200), color=red, thickness=-1)
038: cv2.rectangle(img=img, pt1=(200, 0), pt2=(400, 200), color=green, thickness=-1)
039: cv2.rectangle(img=img, pt1=(400, 0), pt2=(600, 200), color=blue, thickness=-1)
040:
041: cv2.rectangle(img=img, pt1=(0, 200), pt2=(200, 400), color=cyan, thickness=-1)
042: cv2.rectangle(img=img, pt1=(200, 200), pt2=(400, 400), color=magenta, thickness=-1)
043: cv2.rectangle(img=img, pt1=(400, 200), pt2=(600, 400), color=yellow, thickness=-1)
044:
045: return img
046:
047: if __name__ == ‘__main__’:
048: print(cv2.__version__)
049:
050: __main()