2-1Gray_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:
013: cv2.destroyAllWindows()
014:
015: def getGpuGray(img):
016: “””GPUを使用”””
017: gpuImg = cv2.cuda_GpuMat() # GPUで画像を使用する準備
018: gpuImg.upload(img) # GPUで編集できるようにイメージをアップロード
019: gpuImg = cv2.cuda.cvtColor(gpuImg, cv2.COLOR_BGR2GRAY) # GPUを使用してグレースケールに変換する
020: img = gpuImg.download() # 元のMatデータに戻す //cuda_Matでは表示できない
021:
022: return img
023:
024: def createImage(): # 画像処理用のデータを生成
025: width = 600
026: height = 480
027:
028: size = (height, width, 3) # 縦480ピクセル 横640ピクセル 3チャンネル
029: img = np.zeros(size, dtype=np.uint8)
030: rete = 255 / width
031: for h in range(0, height):
032: for w in range(0, width):
033: data = int(w * rete)
034: img[h, w] = [data, data, data]
035: red = np.array([0., 0., 255.])
036: green = np.array([0., 255., 0.])
037: blue = np.array([255., 0., 0.])
038:
039: cyan = np.array([255., 255., 0.])
040: magenta = np.array([255., 0., 255])
041: yellow = np.array([0., 255., 255.])
042:
043: cv2.rectangle(img=img, pt1=(0, 0), pt2=(200, 200), color=red, thickness=-1)
044: cv2.rectangle(img=img, pt1=(200, 0), pt2=(400, 200), color=green, thickness=-1)
045: cv2.rectangle(img=img, pt1=(400, 0), pt2=(600, 200), color=blue, thickness=-1)
046:
047: cv2.rectangle(img=img, pt1=(0, 200), pt2=(200, 400), color=cyan, thickness=-1)
048: cv2.rectangle(img=img, pt1=(200, 200), pt2=(400, 400), color=magenta, thickness=-1)
049: cv2.rectangle(img=img, pt1=(400, 200), pt2=(600, 400), color=yellow, thickness=-1)
050:
051: return img
052:
053:
054: if __name__ == ‘__main__’:
055: print(cv2.__version__)
056:
057: __main()