title: How does one convert a grayscale image to RGB in OpenCV (Python)?
body: <p>I'm learning image processing using OpenCV for a realtime application. I did some thresholding on an image and want to label the contours in green, but they aren't showing up in green because my image is in black and white.</p>
  <p>Early in the program I used <code>gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)</code> to convert from RGB to grayscale, but to go back I'm confused, and the function <code>backtorgb = cv2.cvtColor(gray,cv2.CV_GRAY2RGB)</code> is giving:</p>
  <blockquote>
  <p><em>AttributeError: 'module' object has no attribute 'CV_GRAY2RGB'.</em></p>
  </blockquote>
  <p>The code below does not appear to be drawing contours in green. Is this because it's a grayscale image? If so, can I convert the grayscale image back to RGB to visualize the contours in green?</p>
  <pre><code>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) &amp; 0xFF == ord('q'):
          break
  
  cap.release()
  cv2.destroyAllWindows()
  </code></pre>