I am trying to determine the width of an artery and have made a very rough program to verify that drawContours is appropriate. My problem is that the contour is only only printing black or white lines as opposed to the colored lines I am trying to use. I am unsure if the img I am drawing on is limited to bw or I have the contour set up wrong. The second image is the contours appended to the original image.
import cv2
import numpy
from FileSupport import *
# Declared Variables ###########################
# file vars
image_file_name = '14.05.25 hrs __[0011697].avi' # this will be given through some file selection of the user
temp_image_file_path = ReturnTempImagePath() # gives file path for .avi files to be stored
# image vars
sample_start_row = 144 # measurements are based off the 640x480 sample image
sample_end_row = 408
sample_start_col = 159
sample_end_col = 518
# colors
RED = (0, 0, 255) # opencv uses BGR not RGB
GREEN = (0, 255, 0)
BLUE = (255, 0, 0)
# Pull image ###################################
print("Getting image from ", image_file_name, "\n")
artery_vid = cv2.VideoCapture(ReturnImagePath(image_file_name))
if not artery_vid.isOpened():
print("Couldn't open file")
sys.exit()
success, image = artery_vid.read()
i_frame = 0
while success:
image = image[sample_start_row:sample_end_row, sample_start_col:sample_end_col]
cv2.imwrite(temp_image_file_path + "frame%i.jpg" % i_frame, image)
# -----Just trying to draw around artery-------
img = cv2.imread(temp_image_file_path + "frame%i.jpg" % i_frame, cv2.IMREAD_GRAYSCALE)
hierarchy, threshold = cv2.threshold(img, 120, 200, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
cv2.imshow("Image Without Contours", image) # contour is also destructive
cv2.drawContours(img, contours, -1, GREEN, 2) # I am expecting the contour lines to be green
cv2.imshow("Image With Contours", img)
cv2.imshow("Threshold Image", threshold)
cv2.waitKey(0)
cv2.destroyAllWindows()
# ---------------------------------------------
print("Image %i Complete" % i_frame, "\n")
i_frame += 1
success, image = artery_vid.read()