Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 14040

Why do I get ( Can't parse 'pt1'. ) when running image prcessing algorithm on video using python?

$
0
0

I am trying to run lane detection using hough transform on pythonand

I keep getting the follow error:

Can't parse 'pt1'. Sequence item with index 0 has a wrong typeon line 47 ,

corresponding to this line:

 cv2.line(line_image, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 10)

I am also getting this error:

TypeError: cannot unpack non-iterable numpy.float64 objectline 6, in make_points    slope, intercept = line    ^^^^^^^^^^^^^^^^

Video format is 720x1280 (720p)

This is the entire code

import cv2import numpy as npimport matplotlib.pyplot as pltdef make_points(image, line):    slope, intercept = line    y1 = int(image.shape[0])# bottom of the image    y2 = int(y1*3/5)         # slightly lower than the middle    x1 = int((y1 - intercept)/slope)    x2 = int((y2 - intercept)/slope)    return [[x1, y1, x2, y2]]def average_slope_intercept(image, lines):    left_fit    = []    right_fit   = []    if lines is None:        return None    for line in lines:        for x1, y1, x2, y2 in line:            fit = np.polyfit((x1,x2), (y1,y2), 1)            slope = fit[0]            intercept = fit[1]            if slope < 0: # y is reversed in image                left_fit.append((slope, intercept))            else:                right_fit.append((slope, intercept))    # add more weight to longer lines    left_fit_average  = np.average(left_fit, axis=0)    right_fit_average = np.average(right_fit, axis=0)    left_line  = make_points(image, left_fit_average)    right_line = make_points(image, right_fit_average)    averaged_lines = [left_line, right_line]    return averaged_linesdef canny(img):    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)    kernel = 5    blur = cv2.GaussianBlur(gray,(kernel, kernel),0)    canny = cv2.Canny(gray, 50, 150)    return cannydef display_lines(img,lines):    line_image = np.zeros_like(img)    if lines is not None:        for line in lines:            for x1, y1, x2, y2 in line:                cv2.line(line_image, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), 10)    return line_imagedef region_of_interest(canny):    height = canny.shape[0]    width = canny.shape[1]    mask = np.zeros_like(canny)    triangle = np.array([[    (200, height),    (800, 350),    (1200, height),]], np.int32)    cv2.fillPoly(mask, triangle, 255)    masked_image = cv2.bitwise_and(canny, mask)    return masked_imagecap = cv2.VideoCapture("Video_City.mp4")while(cap.isOpened()):    _, frame = cap.read()    canny_image = canny(frame)    cropped_canny = region_of_interest(canny_image)    lines = cv2.HoughLinesP(cropped_canny, 2, np.pi/180, 100, np.array([]), minLineLength=40,maxLineGap=5)    averaged_lines = average_slope_intercept(frame, lines)    line_image = display_lines(frame, averaged_lines)    combo_image = cv2.addWeighted(frame, 0.8, line_image, 1, 1)    cv2.imshow("result", combo_image)    if cv2.waitKey(1) & 0xFF == ord('q'):        breakcap.release()cv2.destroyAllWindows()

any idea how to fix this? I tried the algorithm on an image and it works just fine. I am not getting any video output.


Viewing all articles
Browse latest Browse all 14040

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>