opencvでカラー画像作成
やること
opencvの関数を使って様々な図形を描く
なぜか
当然ながら、pythonのopencv(cv2)とC++のopencv(cv::)とで関数の仕様がことなります。 コーディングをしていてどっちだっけ?ってなることが多いのでメモしておきます。
使う関数
- 矩形
cv2.rectangle()
- 円
cv2.circle()
コード
google colaboratoryを利用します。
矩形&円
import numpy as np import cv2 import matplotlib.pyplot as plt % matplotlib inline USIZE = 256 VSIZE = 256 CHANEL = 3 MAXHEIGHT = 50 MAXWIDTH = 50 def makeImage(): image = np.zeros((256, 256, 3)) boxnum = 20 for i in range(boxnum): sx = np.random.randint(0, USIZE-MAXWIDTH) sy = np.random.randint(0, USIZE-MAXHEIGHT) ex = sx + np.random.randint(1, MAXWIDTH) ey = sy + np.random.randint(1, MAXHEIGHT) color_b = np.random.randint(0, 255) color_g = np.random.randint(0, 255) color_r = np.random.randint(0, 255) if(i % 2 == 0): ## rectangle(画像, 始点(左上), 終点(右下), カラー(B,G,R), 塗りつぶし(-1)) image = cv2.rectangle(image, (sx, sy), (ex, ey), (color_b, color_g, color_r), -1) else: ## circle(画像, 中心, 太さ, カラー(B,G,R), 塗りつぶし(-1)) image = cv2.circle(image, (sx, sy), np.random.randint(5, 10), (color_b, color_g, color_r), -1) image = image.astype(np.uint8) plt.figure() plt.imshow(image) makeImage()
出力結果