Thank you for looking into this, I have a python script for lane detection using cv2, it seems a cv2 function is causing the following error.
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-r2ue8w6k\opencv\modules\imgproc\src\drawing.cpp:2395: error: (-215:Assertion failed) p.checkVector(2, CV_32S) >= 0 in function 'cv::fillPoly'
when I run the below code
import cv2
import numpy as np
import matplotlib.pyplot as plt
from numpy.lib.twodim_base import tri
image = cv2.imread('Lane1-a.jpg')
class ImageProcess:
image_height =0
image_width = 0
def __init__(self,image):
self.image_height = image.shape[0]
self.image_width = image.shape[1]
def Preprocess(self,image):
copy = self.GetCopy(image)
gray = self.GetGrayScale(copy)
blur = cv2.GaussianBlur(gray,(5,5),0)
edgify = cv2.Canny(blur,50,150)
return edgify
def GetCopy(self,image):
return np.copy(image) # do not use lane_image = image ( this does not create a copy but modifies origanl array)
def GetGrayScale(self,image):
return cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)
def ShowImage(self,image):
plt.imshow(image)
plt.show()
def ReigonOfIntrest(self,image):
traingle = np.array([(200,self.image_height),(1000,self.image_height),(550,400)])
mask = np.zeros_like(image)
cv2.fillPoly(mask,traingle,255)
return mask
p = ImageProcess(image)
mask = p.ReigonOfIntrest(p.Preprocess(image))
p.ShowImage(mask)
I tried This answer here, but it did not help, please can you look into it.