tutorial instalar gui book python opencv image-processing

instalar - ¿Cómo se puede convertir una imagen en escala de grises a RGB en OpenCV(Python) para visualizar los contornos después de procesar una imagen en binario?



opencv python load image (3)

Estoy promoviendo mi comentario a una respuesta:

La manera fácil es:

Podría dibujar el ''marco'' original en lugar de usar una imagen gris.

La manera difícil (método que estabas tratando de implementar):

backtorgb = cv2.cvtColor(gray,cv2.COLOR_GRAY2RGB) es la sintaxis correcta.

Estoy aprendiendo el procesamiento de imágenes usando OpenCV para una aplicación en tiempo real. Hice algunos umbrales en una imagen y quiero etiquetar los contornos en verde, pero no se muestran en verde porque mi imagen está en blanco y negro.

Al principio del programa utilicé gray = cv2.cvtColor (frame, cv2.COLOR_BGR2GRAY) para convertir de RGB a escala de grises, pero para volver estoy confundido, y la función backtorgb = cv2.cvtColor (gris, cv2.CV_GRAY2RGB) está dando AttributeError: el objeto ''module'' no tiene el atributo ''CV_GRAY2RGB''.

El código siguiente no parece dibujar contornos en verde, ¿es porque es una imagen en escala de grises? Si es así, ¿puedo convertir la imagen en escala de grises a RGB para visualizar los contornos en verde?

import numpy as np import cv2 import time cap = cv2.VideoCapture(0) while(cap.isOpened()): ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) ret, gb = cv2.threshold(gray,128,255,cv2.THRESH_BINARY) gb = cv2.bitwise_not(gb) contour,hier = cv2.findContours(gb,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE) for cnt in contour: cv2.drawContours(gb,[cnt],0,255,-1) gray = cv2.bitwise_not(gb) cv2.drawContours(gray,contour,-1,(0,255,0),3) cv2.imshow(''test'', gray) if cv2.waitKey(1) & 0xFF == ord(''q''): break cap.release() cv2.destroyAllWindows()


Prueba esto:

import cv2 import cv color_img = cv2.cvtColor(gray_img, cv.CV_GRAY2RGB)

Descubrí, al usar opencv, que algunas de las constantes están definidas en el módulo cv2 y otras en el módulo cv.


Si convierte su imagen a escala de grises, no podrá volver. Has pasado de tres canales a uno, cuando tratas de volver, los tres números serán los mismos. Entonces la respuesta corta es no, no puedes regresar. La razón por la cual su backtorgb funciona al arrojar ese error es porque necesita estar en el formato:

CvtColor(input, output, CV_GRAY2BGR)

OpenCV usa BGR no RGB, por lo que si arreglas el orden debería funcionar, aunque tu imagen seguirá siendo gris.