首页 > 解决方案 > cv2 断言失败错误,p.checkVector(2, CV_32S) 问题与 FillPoly

问题描述

感谢您对此进行调查,我有一个使用 cv2 进行车道检测的 python 脚本,似乎 cv2 函数导致以下错误。

cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-r2ue8w6k\opencv\modules\imgproc\src\drawing.cpp:2395:错误:( -215: 断言失败) p.checkVector(2, CV_32S) >= 0 in function 'cv::fillPoly'

当我运行以下代码时

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)

我在这里试过这个答案,但它没有帮助,请你看看它。

标签: pythonmatplotlibnumpy-ndarraycv2

解决方案


推荐阅读