8-4RectangleIN2.py

000: import cv2
001: import numpy as np
002: import random
003:
004: def __main():
005: img = createBaseImage()
006:
007: rect = cv2.minAreaRect(pts) # 四角く括れるエリアを探す//角度のついた長方形の値が戻る
008: box = cv2.boxPoints(rect) # 上記エリアを長方形座標に変換する
009: box = np.int0(box)
010: img = cv2.drawContours(img, [box], -1, (255, 255, 0), 2, cv2.LINE_AA) # 長方形を描画する
011:
012: cv2.imshow(‘Final result’, img)
013: cv2.waitKey(0)
014:
015: cv2.destroyAllWindows()
016:
017: # ノイズの描画
018: def __setNoise(img, color):
019: global pts
020: height, width, channels = img.shape[:3]
021:
022: for num in range(50):
023: x = int(random.uniform((width / 2) – (width / 4), (width / 2) + (width / 4)))
024: y = int(random.uniform((height / 2) – (height / 4), (height / 2) + (height / 4)))
025: angle = (x, y, 3, 3)
026: cv2.rectangle(img, angle, color, -1)
027: # ここで点群の座標を記録
028: pts = np.append(pts, np.array([[x, y]]), axis=0)
029: return img
030:
031: def createBaseImage():
032: size = (480, 640, 3) # 縦480ピクセル 横640ピクセル 3チャンネル
033: color = (0, 0, 0)
034: # 黒で塗りつぶしたMat画像を生成
035: img = np.full(size, color, dtype=np.uint8)
036:
037: color = (255, 255, 255)
038: img = __setNoise(img, color)
039:
040: return img
041:
042: if __name__ == ‘__main__’:
043: print(cv2.__version__)
044:
045: pts = np.empty((0, 2), int)
046: __main()