繁体   English   中英

对象 opencv.js 周围的边界矩形在控制台中抛出错误

[英]Bounding rectangle around object opencv.js throwing error in console

我正在使用 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 未捕获的类型错误:无法在 Object.boundingRect 处读取 RegisteredPointer.nonConstNoSmartPtrRawPointerToWireType [as toWireType] (opcv.js:21) 处未定义的属性“$$”(在 new_ (opcv.js:21) 处进行评估),:7 :26) 在 HTMLInputElement.inputElement.addEventListener (openCv.php:52) nonConstNoSmartPtrRawPointerToWireType @ opcv.js:21 boundingRect @ VM24025:7

inputElement.addEventListener @ openCv.php:52

控制台中的错误。

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

在您的代码中,

<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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM