gpt4 book ai didi

java - ColorBlobDetector 无法乘以轮廓

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:01 28 4
gpt4 key购买 nike

我是 OpenCV 的新手,尝试使用 OpenCv 样本中的 ColorBlobDetector,但它返回错误

Core.multiply(contour, new Scalar(4,4), contour);

说“致命信号 11 (SIGSEGV),代码 1,tid 10111 (Thread-28303) 中的故障地址 9x9

我正在使用 eclipse。

我已经搜索了一整天,谁能告诉我为什么会出现这个错误以及如何解决?我没有在代码中编辑任何内容。

我想知道如何修改代码,以便我可以指定应用程序仅从应用程序启动时检测白色轮廓?

谢谢。

最佳答案

我建议只是一个临时解决方案(我不能尝试整个代码,因为我不使用 java)

您可以按以下方式进行编辑(此更改可能会降低处理速度,但应该可以)

public void process(Mat rgbaImage) {
//Imgproc.pyrDown(rgbaImage, mPyrDownMat);
//Imgproc.pyrDown(mPyrDownMat, mPyrDownMat);

Imgproc.cvtColor(rgbaImage, mHsvMat, Imgproc.COLOR_RGB2HSV_FULL);

Core.inRange(mHsvMat, mLowerBound, mUpperBound, mMask);
Imgproc.dilate(mMask, mDilatedMask, new Mat());

List<MatOfPoint> contours = new ArrayList<MatOfPoint>();

Imgproc.findContours(mDilatedMask, contours, mHierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);

// Find max contour area
double maxArea = 0;
Iterator<MatOfPoint> each = contours.iterator();
while (each.hasNext()) {
MatOfPoint wrapper = each.next();
double area = Imgproc.contourArea(wrapper);
if (area > maxArea)
maxArea = area;
}

// Filter contours by area and resize to fit the original image size
mContours.clear();
each = contours.iterator();
while (each.hasNext()) {
MatOfPoint contour = each.next();
if (Imgproc.contourArea(contour) > mMinContourArea*maxArea) {
//Core.multiply(contour, new Scalar(4,4), contour);
mContours.add(contour);
}
}

关于java - ColorBlobDetector 无法乘以轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887187/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com