cv :: erode导致错误:OpenCV错误:断言失败(m.dims> = 2)在Mat中

乔治·安杰洛夫(Georgi Angelov)

因此,我正在使用cvBlob和背景减法库。当我处理图像并得到遮罩时,我然后尝试腐蚀并扩大它。

尝试侵蚀图像时出现错误。这是错误:

OpenCV Error: Assertion failed (m.dims >= 2) in Mat, file /home/opencv-3.0.0/modules/core/src/matrix.cpp, line 441
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/opencv-3.0.0/modules/core/src/matrix.cpp:441: error: (-215) m.dims >= 2 in function Mat

Aborted (core dumped)

这是我的代码。

using namespace cv;
using namespace std;
int keyboard; //input from keyboard

int main(int argc, char **argv)
{
IBGS *bgs;

BlobTracking* blobTracking;
blobTracking = new BlobTracking();

bgs = new FrameDifferenceBGS;

Mat img_input;
Mat img_blob;

//create the capture object
VideoCapture capture(argv[1]);

if(!capture.isOpened()){
    //error in opening the video input
    cerr << "Unable to open video file: " << argv[1] << endl;
    exit(EXIT_FAILURE);
}

//read input data. ESC or 'q' for quitting
while( (char)keyboard != 'q' && (char)keyboard != 27 ){
    //read the current frame
    if(!capture.read(img_input)) {
        cerr << "Unable to read next frame." << endl;
        cerr << "Exiting..." << endl;
        exit(EXIT_FAILURE);
    }

    cv::Mat img_mask;
    cv::Mat img_bkgmodel;

    // by default, it shows automatically the foreground mask image
    bgs->process(img_input, img_mask, img_bkgmodel);

    cv::Mat img_mask_erode_and_dilate;
    int erosion_size=3;

    cv::Mat element = cv::getStructuringElement( cv::MORPH_RECT,
                                           cv::Size( 2*erosion_size + 1, 2*erosion_size+1 ),
                                           cv::Point( erosion_size, erosion_size ) );

    // Erode the frame
    cv::erode(img_mask, img_mask_erode_and_dilate, element);

    // Dilate the frame
    cv::dilate(img_mask, img_mask_erode_and_dilate, element);

    // Show before and after dilate and erode
    cv::imshow("Frame Before Erode or Dilate", img_mask);
    cv::imshow("Frame AFTER Erode and Dilate", img_mask_erode_and_dilate

    //get the input from the keyboard
    keyboard = waitKey( 30 );
}

//delete capture object
capture.release();

delete bgs;

cvDestroyAllWindows();

return 0;

}

如果我使用原始框架而不是经过处理的框架,那么一切都可以解决。我怀疑背景减法算法返回的灰度图像有问题

米卡

该错误告诉您输入图像具有多个通道。取而代之的是,对二进制蒙版图像执行morph运算符,例如,由canny函数或灰度图像的阈值处理产生的结果。

因此,请检查您的输入掩码是否包含其中的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

OpenCV错误-cv2.cvtcolor

比较2 cv :: Mat

openCV cv :: mat版本

OpenCV错误:cv :: cvtColor,文件.. \ .. \ .. \ .. \ opencv \ modules \ imgproc \ src \ color.cpp,第3737行中的断言失败(scn == 3 || scn == 4)

python opencv cv2.cv.CV_CAP_PROP_FRAME_COUNT获取错误的数字

OpenCV(cv2)中的undistortPoints与Python错误结果

是什么原因导致“ OpenCV(4.0.1)错误:断言失败(m.dims <= 2)”

函数'cv :: dnn :: ConvolutionLayerImpl :: getMemoryShapes'中的OpenCV深度学习面部检测断言错误

\ resize.cpp:3787:错误:(-215:断言失败)函数!= 0在函数'cv :: hal :: resize'中

cv2.error:函数'cv :: cvtColor'中的OpenCV(4.0.0)(-215:断言失败)!_src.empty()

OpenCV(4.0.0)Python错误:(-215:断言失败)(mtype == CV_8U || mtype == CV_8S)&& _mask.sameSize(* psrc1)在函数'cv :: binary_op'中

错误:OpenCV(4.1.0)错误:(-215:断言失败)函数'cv :: resize'中的!ssize.empty()

拉普拉斯语的opencv失败并显示cv2。错误:OpenCV(4.1.2)

(-215:断言失败)函数<cv :: icvExtractPattern'中的数字<max_number错误?

错误:(-215:声明失败)cv :: dnn中的函数'FormattedImpl'中的m.dims <= 2

OpenCV错误:(-215:断言失败)(mtype == CV_8U || mtype == CV_8S)&& _mask.sameSize(* psrc1)在函数'cv :: binary_op'中

cv2.LUT在执行伽玛校正时引发错误-断言失败

Python-OpenCV cv2 OpenCV错误:在未知函数,文件.. \ .. \ .. \ modules \ imgproc \ src \ color.cpp中,断言失败(scn == 3 || scn == 4)

OpenCV断言失败错误:(-215)scn == 3 || scn == 4在函数cv :: cvtColor中工作ALTERNATE次

Boost / OpenCV错误:无法匹配'(boost :: _ mfi :: dm <void(cv :: Mat *,cv :: VideoCapture *),Recorder>)

OpenCV 2.4:在MFC中显示cv :: Mat

OpenCV 3.1.0断言cv :: HOGDescriptor :: setSVMDetector中的checkDetectorSize失败

在 OpenCV 中将灰度图像类型转换为 CV_32F 时,Mat 的 convertTo 函数会抱怨断言错误

CV2:Python OpenCV 中的导入错误

OpenCV 错误:断言失败 ((scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)) 在 cvtColor 中

断言失败 CV_Assert( CV_IS_MAT(objectPoints) && CV_IS_MAT(imagePoints) && CV_IS_MAT(A) && CV_IS_MAT(rvec) && CV_IS_MAT(tvec) )

错误:阈值中的断言失败(src.type() == CV_8UC1)

错误:(-215:断言失败)函数“cv::perspectiveTransform”中的 scn + 1 == m.cols

cv2.error : OpenCV(4.5.3) 错误:cv.line 中的参数错误和重载解析失败