7 ответов:
использование OpenCV C API с
IplImage* img:использовать cvSet():
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));
вот как это сделать с cv2 в Python:
# 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)
самый простой-это использование класса OpenCV Mat:
img=cv::Scalar(blue_value, green_value, red_value);здесь
imgопределяется какcv::Mat.
для 8-битного (CV_8U) изображения OpenCV синтаксис:
Mat img(Mat(nHeight, nWidth, CV_8U); img = cv::Scalar(50); // or the desired uint8_t value from 0-255
создайте новое изображение 640x480 и заполните его фиолетовым (красный+синий):
cv::Mat mat(480, 640, CV_8UC3, cv::Scalar(255,0,255));Примечание:
- высота до ширина
- тип CV_8UC3 означает 8-битный unsigned int, 3 канала
- формат цвета BGR
Если вы используете Java для OpenCV, то вы можете использовать следующий код.
Mat img = src.clone(); //Clone from the original image img.setTo(new Scalar(255,255,255)); //This sets the whole image to white, it is R,G,B value
использовать
numpy.full. Вот пример Python, который устанавливает все изображение в серый цвет и обеспечивает беззнаковый 8-разрядный целочисленный тип результата.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')
Comments