2010-12-02 28 views

Respuesta

77

Uso de la API OpenCV C con IplImage* img:

Uso cvSet(): cvSet(img, CV_RGB(redVal,greenVal,blueVal));

Uso de la API OpenCV C++ con cv::Mat img, a continuación, utilizar ya sea:

cv::Mat::operator=(const Scalar& s) como en:

img = cv::Scalar(redVal,greenVal,blueVal); 

o the more general, mask supporting, cv::Mat::setTo():

img.setTo(cv::Scalar(redVal,greenVal,blueVal)); 
+3

En caso ¿es rojo, verde, azul O azul, verde, rojo? ¿No es azul, verde, rojo en opencv? –

+13

Es azul, verde, rojo. Confrmed – TheUnexpected

+3

En realidad, OpenCV es independiente del orden del canal. Tiene razón en que el orden de canal más común (en PC) es 'BGR' aunque esto no es muy pertinente para esta respuesta. En general, es responsabilidad del usuario realizar un seguimiento del pedido del canal. –

9

El más simple es el uso de la clase OpenCV Mat:

img=cv::Scalar(blue_value, green_value, red_value); 

donde img se definió como una cv::Mat.

13

Así es como hacer con cv2 en 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) 

Aquí hay ejemplo más completo de cómo crear nueva imagen en blanco lleno de un determinado color 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) 
4

Para un niño de 8 bits (CV_8U) Imagen de OpenCV, la sintaxis es:

Mat img(Mat(nHeight, nWidth, CV_8U); 
img = cv::Scalar(50); // or the desired uint8_t value from 0-255 
3

Si está utilizando Java para OpenCV, puede usar código que brilla.

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 
4

Crear una nueva imagen de 640x480 y llenarlo de color púrpura (rojo + azul):

cv::Mat mat(480, 640, CV_8UC3, cv::Scalar(255,0,255)); 

Nota:

  • altura antes de anchura
  • tipo CV_8UC3 significa de 8 bits unsigned int, 3 canales
  • formato de color es BGR
Cuestiones relacionadas