OpenCVの画像を1色のベタで塗りつぶすには?
OpenCV C API を IplImage* img
と共に使用します.
cvSet()]1 を利用: cvSet(img, CV_RGB(redVal,greenVal,blueVal));
.
OpenCV C++ API を cv::Mat img
と共に利用する場合,以下のどちらかを行います.
のように, cv::Mat::operator=(const Scalar& s)
を利用します.
img = cv::Scalar(redVal,greenVal,blueVal);
あるいは,より一般的でマスクをサポートする cv::Mat::setTo()
のようになります.
img.setTo(cv::Scalar(redVal,greenVal,blueVal));
ここでは、Pythonでcv2を使う方法を紹介します。
# Create a blank 300x300 black image
image = np.zeros((300, 300, 3), np.uint8)
# Fill image with red color(set each pixel to red)
image[:] = (0, 0, 255)
より完全な例として,あるRGBカラーで塗りつぶされた新しい空白の画像を作成する方法を示します。
import cv2
import numpy as np
def create_blank(width, height, rgb_color=(0, 0, 0)):
"""Create new image(numpy array) filled with certain color in RGB"""
# Create black blank image
image = np.zeros((height, width, 3), np.uint8)
# Since OpenCV uses BGR, convert the color first
color = tuple(reversed(rgb_color))
# Fill image with color
image[:] = color
return image
# Create new blank 300x300 red image
width, height = 300, 300
red = (255, 0, 0)
image = create_blank(width, height, rgb_color=red)
cv2.imwrite('red.jpg', image)
numpy.fu ll
を使用します。 画像全体を灰色に設定し、符号なし8ビット整数結果タイプを保証するPythonの例を次に示します。
import cv2
import numpy as np
img = np.full((100, 100, 3), 127, np.uint8)
cv2.imshow('single color', img)
cv2.waitKey(0)
cv2.destroyWindow('single color')