[英]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
控制台中的错误。
当findContours
输出值contours
具有 0 个元素时,将引发此错误,从而取消引用空指针。
在您的代码中,
<br>
let cnt = contours.get(0);
<br>
<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.