- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 Android 中使用 Canny 检测图像的边缘,但它一直抛出此错误:
E/cv::error(): OpenCV Error: Assertion failed (_dx.type() == CV_16SC1 || _dx.type() == CV_16SC3) in void cv::Canny(cv::InputArray, cv::InputArray, cv::OutputArray, double, double, bool), file /build/master_pack-android/opencv/modules/imgproc/src/canny.cpp, line 959
E/org.opencv.imgproc: imgproc::Canny_11() caught cv::Exception: /build/master_pack-android/opencv/modules/imgproc/src/canny.cpp:959: error: (-215) _dx.type() == CV_16SC1 || _dx.type() == CV_16SC3 in function void cv::Canny(cv::InputArray, cv::InputArray, cv::OutputArray, double, double, bool)
W/System.err: CvException [org.opencv.core.CvException: cv::Exception: /build/master_pack-android/opencv/modules/imgproc/src/canny.cpp:959: error: (-215) _dx.type() == CV_16SC1 || _dx.type() == CV_16SC3 in function void cv::Canny(cv::InputArray, cv::InputArray, cv::OutputArray, double, double, bool)
W/System.err: ]
W/System.err: at org.opencv.imgproc.Imgproc.Canny_1(Native Method)
W/System.err: at org.opencv.imgproc.Imgproc.Canny(Imgproc.java:984)
W/System.err: at app.android.opencvproject.OpenCVText.detectContours(OpenCVText.java:185)
W/System.err: at app.android.opencvproject.CameraPreview$1$1.run(CameraPreview.java:428)
W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
W/System.err: at java.lang.Thread.run(Thread.java:818)
我不知道是什么原因导致错误,我在互联网上也没有找到任何答案。
这是我使用的代码:
public void detectContours(Bitmap bitmap){
try{
Mat img = new Mat();
Utils.bitmapToMat(bitmap, img);
Mat gray = new Mat(img.size(), CvType.CV_8UC1);
Imgproc.cvtColor(img, gray, Imgproc.COLOR_RGB2GRAY, 4);
Imgproc.Canny(gray, gray, 80, 100);
Bitmap outputBitmap = Bitmap.createBitmap(gray.cols(), gray.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(gray, outputBitmap);
MediaStore.Images.Media.insertImage(context.getContentResolver(), outputBitmap, "Opencv" , "Hello");
Log.d("OPENCV", "Image stored in your gallery");
}catch (Exception e){
e.printStackTrace();
}
}
谁能帮我解决这个问题?
提前致谢!
最佳答案
在应用 cvtColor
后,您是否尝试过检查灰色输出?
你能检查你的图像类型吗(意味着调用 getType()
)
关于java - Android Java Opencv canny 抛出 cvexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42349966/
我有一个脚本,该脚本用于根据颜色相似性为房间的墙壁重新着色。但是我需要根据边缘检测为墙壁重新着色。 import cv2 import numpy as np import sys from PIL
我想尝试 Canny 边缘检测器,但是当我尝试开始时收到未处理的异常: canny_project.exe 中 0x00007FF97F6C8B9C 处未处理的异常:Microsoft C++ 异常:
我想从二进制 canny 边缘图像中提取轮廓。 原图为: 应用 cvCanny() 和 cvDilate() 后,我得到以下图像: 我需要将封闭框(整个蓝色框)检测为轮廓。我应用 cvFindCont
我在 OpenCV Java 中使用 Canny 边缘算法找出了边缘。我需要从这张图片中提取脊髓。 能否请您建议下一步如何仅从此图像中提取脊髓? 这是原始图像: 最佳答案 要从图像中提取特定对象,您必
我正在使用 canny 边缘检测器来检测输入图像的边缘。 在每个输入图像中,可以有两个对象(主对象和其中的另一个对象),如示例图像所示。因此,我应该在这种情况下检测两条边 我根据输入图像自动确定阈值上
我使用 OpenCV 的时间相当短,对图像执行了 Canny 边缘检测,然后还执行了膨胀以进一步将对象(在我的例子中是正方形)与背景分开。 我现在的问题是使用一种算法来识别 2D 中的可抓取区域,该算
我有一张图片,我想检测它的边缘。我发现 Canny 已经被使用了很多(我不知道我是否有比这更好的选择)。我已将值设置如下: Imgproc.Canny(img, img, 10, 100, 3,t
我正在尝试寻找图像的轮廓,在此之前我正在应用 Canny 的边缘检测器。它为不同的图像提供不同的结果。对于一张图像,它在阈值下给出完美的轮廓 - min-40 max-240,而对于其他图像,它的阈值
当我使用 canny edge 算法时,它会按预期产生与粗彩色线相对的 2 条边,但我只想显示一条边,以使我的直线和曲线检测算法更简单,关于我怎样才能做到这一点? 代码如下: bool CannyEd
当使用 Imagemagick 转换工具的 -canny 选项时,这些参数指的是什么? -canny radiusxsigma{+lower-percent}{+upper-percent} 文档 (
我正在尝试创建一个程序,该程序将检测并去除图片中的边框,目标是检测图片中的文档并将其清理... 这是我的代码: import sys import cv2 import numpy as np imp
我知道在使用 Canny 检测边缘之前对图像应用高斯模糊非常重要。我的问题是: cv2.Canny() 自己做高斯模糊还是有必要在 cv2.Canny() 之前应用 cv2.GaussianBlur(
当我在图纸上运行 cv.Canny 边缘检测器时,它会检测到数百个密集填充在阴影区域中的小边缘。我怎样才能让它停止这样做,同时仍然检测到眼睛和 Nose 等较轻的特征?我也试过模糊。 这是一个示例,与
我正在尝试在此图像上运行精明边缘检测器: 使用此代码: def edges(img): from skimage import feature img = Image.open(img
我尝试过 OpenCV 中的 cvFindContours 函数,以在 Canny-edge-decctting 后获取单独的边缘。 我的问题是如何自己做与 cvFindcontours 相同的事情。
假设 Canny 边缘检测器成功检测到图像中的边缘。然后将边缘旋转 θ,其中原始边缘上的点 (x,y)(x,y) 与旋转边缘上的点 (x′,y) 之间的关系′)(x′,y′)定义为x′ = xcosθ
我想从 canny edge map 中找到并标记端点。 我试图通过只与一个邻居查看点来自己做,但此时的结果很奇怪。 OpenCV 中有查找端点的函数吗? 来自原始 Canny 的样本: 放大示例:
我正在尝试使用 Canny 过滤器检测图像的边缘。我已经能够检测到图像,但角落不是很尖锐(以红色圆圈突出显示)。令人惊讶的是,与其他角相比,第一个角很锋利并且没有烧坏。为什么会发生这种情况以及如何避免
我有 Canny 检测到的边缘。我想提取边缘的轮廓。 我已经检查了以下帖子。 OpenCV converting Canny edges to contours . 但它没有处理复杂的形状。例如,带矩
是否可以制作Canny忽略短边还是忽略低梯度边?在我的例子中,我将卡片放在木头上,并在 canny 之后看到木结构的许多边缘 canny 函数中的两个阈值有什么用? 最佳答案 Large intens
我是一名优秀的程序员,十分优秀!