Interface編集部
2-3Binary_gpu.py
000: import cv2
001: import numpy as np
002:
003: def __main():
004:
005:     img = createImage()
006:     cv2.imshow(‘Orignal’, img)
007:
008:     timeStart = time.time()
009:     # ここで処理を実行する
010:     img = getGpuBinary(img)
011:     timeEnd = time.time()
012:     print(“{0} = {1}”.format(‘GPU’, (timeEnd – timeStart) * 1000) + “/ms”)
013:
014:     cv2.imshow(‘Final result’, img)
015:     cv2.waitKey(0)
016:
017:     cv2.destroyAllWindows()
018:
019: def getGpuBinary(src):
020:     “””GPUを使用”””
021:     global gpuImg
022:     global gpuGray
023:     global gpuDst
024:
025:     gpuImg.upload(src)  # GPUで編集できるようにイメージをアップロード
026:
027:     gpuGray = cv2.cuda.cvtColor(gpuImg, cv2.COLOR_BGR2GRAY)  # GPUを使用してグレースケールに変換する
028:     # 閾値(thresh)以下の値は0に,それ以外はmaxValで指定した値になる
029:     ret, gpuDst = cv2.cuda.threshold(gpuGray, thresh=128, maxval=255, type=cv2.THRESH_BINARY)  # GPUを使用してグレースケールを二値化する
030:
031:     dst = gpuDst.download()  # 元のMatデータに戻す //cuda_Matでは表示できない
032:
033:     return dst
034:
035:
036: def createImage():
037:
038:     width = 600
039:     height = 480
040:
041:     size = (height, width, 3)  # 縦480ピクセル 横640ピクセル 3チャンネル
042:     img = np.zeros(size, dtype=np.uint8)
043:     rete = 255 / width
044:     for h in range(0, height):
045:         for w in range(0, width):
046:             data = int(w * rete)
047:             img[h, w] = [data, data, data]
048:
049:     red = np.array([0., 0., 255.])
050:     green = np.array([0., 255., 0.])
051:     blue = np.array([255., 0., 0.])
052:
053:     cyan = np.array([255., 255., 0.])
054:     magenta = np.array([255., 0., 255])
055:     yellow = np.array([0., 255., 255.])
056:
057:     cv2.rectangle(img=img, pt1=(0, 0), pt2=(200, 200), color=red, thickness=-1)
058:     cv2.rectangle(img=img, pt1=(200, 0), pt2=(400, 200), color=green, thickness=-1)
059:     cv2.rectangle(img=img, pt1=(400, 0), pt2=(600, 200), color=blue, thickness=-1)
060:
061:     cv2.rectangle(img=img, pt1=(0, 200), pt2=(200, 400), color=cyan, thickness=-1)
062:     cv2.rectangle(img=img, pt1=(200, 200), pt2=(400, 400), color=magenta, thickness=-1)
063:     cv2.rectangle(img=img, pt1=(400, 200), pt2=(600, 400), color=yellow, thickness=-1)
064:
065:     return img
066:
067: if __name__ == ‘__main__’:
068:     print(cv2.__version__)
069:
070:     gpuImg = cv2.cuda_GpuMat()  # GPUで画像を使用する準備
071:     gpuGray = cv2.cuda_GpuMat()
072:     gpuDst = cv2.cuda_GpuMat()
073:     __main()








			
			
		







