【问题标题】:Bounding rectangle around object opencv.js throwing error in console围绕对象opencv.js的边界矩形在控制台中抛出错误
【发布时间】:2020-05-01 02:46:46
【问题描述】:

我正在使用 opencv.js 库从图像中查找对象。无法在资助对象周围绘制矩形

我已经尝试过下面的代码块

        var canvas = document.getElementById('canvasInput');
        canvas.renderImage(e.target.files[0]);
        let src = cv.imread("canvasInput");
        let dst = cv.Mat.zeros(src.rows, src.cols, cv.CV_8UC3);
        cv.cvtColor(src, src, cv.COLOR_RGBA2GRAY, 0);
        cv.threshold(src, src, 177, 200, cv.THRESH_BINARY);
        let contours = new cv.MatVector();
        let hierarchy = new cv.Mat();
        cv.findContours(src, contours, hierarchy, cv.RETR_CCOMP, cv.CHAIN_APPROX_SIMPLE);
        let cnt = contours.get(0);
        let rect = cv.boundingRect(cnt);
        let contoursColor = new cv.Scalar(255, 255, 255);
        let rectangleColor = new cv.Scalar(255, 0, 0);
        cv.drawContours(dst, contours, 0, contoursColor, 1, 8, hierarchy, 100);
        let point1 = new cv.Point(rect.x, rect.y);
        let point2 = new cv.Point(rect.x + rect.width, rect.y + rect.height);
        cv.rectangle(dst, point1, point2, rectangleColor, 2, cv.LINE_AA, 0);
        cv.imshow('canvasOutput', dst);
        src.delete(); dst.delete(); contours.delete(); hierarchy.delete(); 
         cnt.delete();

但发现

opcv.js:21 Uncaught TypeError: Cannot read property '$$' of undefined 在 RegisteredPointer.nonConstNoSmartPtrRawPointerToWireType [as toWireType] (opcv.js:21) 在 Object.boundingRect (eval at new_ (opcv.js:21), :7:26) 在 HTMLInputElement.inputElement.addEventListener (openCv.php:52) nonConstNoSmartPtrRawPointerToWireType @ opcv.js:21 boundingRect@VM24025:7

inputElement.addEventListener@openCv.php:52

控制台出错。

【问题讨论】:

    标签: javascript opencv


    【解决方案1】:

    findContours 输出值contours 有0 个元素时将引发此错误,从而取消引用空指针。

    【讨论】:

      【解决方案2】:

      在您的代码中,

      <br>
      let cnt = contours.get(0);
      <br>
      

      cnt 没有得到任何轮廓然后 opencv.js 文件没有实现返回到轮廓零然后它给出错误

      <br>
      (opcv.js:21 Uncaught TypeError: Cannot read property '$$' of undefined at RegisteredPointer.nonConstNoSmartPtrRawPointerToWireType [as toWireType] (opcv.js:21) at Object.boundingRect (eval at new_ (opcv.js:21), :7:26) at HTMLInputElement.inputElement.addEventListener (openCv.php:52) nonConstNoSmartPtrRawPointerToWireType @ opcv.js:21 boundingRect @ VM24025:7)
      

      解决方案是使用其他图像或查看代码中返回的任何平面图像,不要使用平面图像

      【讨论】:

        猜你喜欢
        • 2016-12-12
        • 2021-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-04
        • 1970-01-01
        • 1970-01-01
        • 2015-01-03
        相关资源
        最近更新 更多