Come si converte un'immagine in scala di grigi in RGB in OpenCV (Python) per visualizzare i contorni dopo aver elaborato un'immagine in binario?


Answers

Prova questo:

import cv2
import cv

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

Ho scoperto, durante l'utilizzo di opencv, che alcune delle costanti sono definite nel modulo cv2 e altre nel modulo cv.

Question

Sto imparando l'elaborazione delle immagini usando OpenCV per un'applicazione in tempo reale. Ho eseguito alcune soglie su un'immagine e desidero etichettare i contorni in verde, ma non vengono visualizzati in verde perché la mia immagine è in bianco e nero.

All'inizio del programma ho usato gray = cv2.cvtColor (frame, cv2.COLOR_BGR2GRAY) per convertire da RGB a gradazioni di grigio, ma per tornare indietro sono confuso e la funzione backtorgb = cv2.cvtColor (gray, cv2.CV_GRAY2RGB) sta dando AttributeError: l'oggetto 'module' non ha attributo 'CV_GRAY2RGB'.

Il codice seguente non sembra disegnare i contorni in verde: è perché è un'immagine in scala di grigi? In tal caso, posso convertire nuovamente l'immagine in scala di grigi in RGB per visualizzare i contorni in 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()



Links