segmentacion raspberry por objetos imagen deteccion colores color binarizar image-processing opencv

image-processing - raspberry - segmentacion de color opencv



¿Cómo llenar la imagen de OpenCV con un solo color? (6)

¿Cómo llenar la imagen de OpenCV con un solo color?


Cree una nueva imagen de 640x480 y llénela de color morado (rojo + azul):

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

Nota:

  • altura antes del ancho
  • tipo CV_8UC3 significa 8 bits sin signo int, 3 canales
  • el formato de color es BGR

He aquí cómo hacerlo 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 un ejemplo más completo de cómo crear una nueva imagen en blanco con cierto 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)


Lo más simple es usar la clase OpenCV Mat:

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

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


Para una imagen OpenCV de 8 bits (CV_8U), la sintaxis es:

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


Si está utilizando Java para OpenCV, puede usar el siguiente código.

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