opencv java 去干扰_java - OpenCV Java修补图像格式要求 - 堆栈内存溢出

一直试图让修复工作在Android上进行,

int height = (int) viewMat.size().height;

int width = (int) viewMat.size().width;

Mat maskMat = new Mat();

maskMat.create(viewMat.size(), CvType.CV_8U);

maskMat.setTo(bColor);

Point r1 = new Point(width/2-width/10, height/2-height/10);

Point r2 = new Point(width/2+width/10, height/2+height/10);

Scalar color = new Scalar(1);

Core.rectangle(maskMat, r1, r2, color, Core.FILLED);

outMat.create(viewMat.size(), CvType.CV_8UC3);

viewMat.convertTo(outMat, CvType.CV_8UC3);

Photo.inpaint(outMat, maskMat, outMat, 1, Photo.INPAINT_TELEA);

受到了欢迎,

Caused by: CvException [org.opencv.core.CvException: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/photo/src/inpaint.cpp:744:

error: (-210) Only 8-bit 1-channel and 3-channel input/output images are supported in function void cvInpaint(const CvArr*, const CvArr*, CvArr*, double, int)

在logcat中。

尝试了数小时以各种方式创建Mats的尝试,但无效。

CV_8U =每通道8位,1通道。 对?

CV_8UC3 =每通道8位,3通道。 对?

那我想念什么呢? 我完全迷住了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Java 中实现表格识别,可以使用 OpenCV 库。以下是基本的步骤: 1. 导入 OpenCV 库和 JavaCV 库。 2. 读取图像并将其转换为灰度图像。 3. 对灰度图像进行二值化处理,以提高表格线的清晰度。 4. 使用霍夫线变换检测表格线。 5. 对表格线进行聚类处理,以确定表格边界。 6. 将表格边界裁剪出来,得到表格图像。 7. 对表格进行字符识别,以获取表格数据。 下面是一个简单的示例代码,演示了如何使用 OpenCV3 在 Java 中识别图中表格: ``` import org.bytedeco.javacpp.Loader; import org.bytedeco.javacpp.opencv_core.*; import org.bytedeco.javacpp.opencv_imgcodecs.*; import org.bytedeco.javacpp.opencv_imgproc.*; public class TableRecognition { public static void main(String[] args) { // 加载 OpenCV 库 Loader.load(opencv_core.class); Loader.load(opencv_imgcodecs.class); Loader.load(opencv_imgproc.class); // 读取图像并转换为灰度图像 Mat image = imread("table.png"); Mat gray = new Mat(); cvtColor(image, gray, COLOR_BGR2GRAY); // 二值化处理 Mat thresh = new Mat(); threshold(gray, thresh, 0, 255, THRESH_BINARY_INV + THRESH_OTSU); // 检测表格线 Mat lines = new Mat(); HoughLinesP(thresh, lines, 1, Math.PI / 180, 50, 30, 10); // 聚类处理 Mat borders = new Mat(); for (int i = 0; i < lines.rows(); i++) { double[] line = lines.get(i, 0); double x1 = line[0], y1 = line[1], x2 = line[2], y2 = line[3]; line(image, new Point(x1, y1), new Point(x2, y2), new Scalar(0, 0, 255), 1, LINE_AA, 0); } imshow("Table Borders", image); waitKey(0); } } ``` 在这个示例中,我们首先加载了 OpenCV 库,然后读取了一张名为 "table.png" 的图像,并将其转换为灰度图像。接下来,我们对灰度图像进行了二值化处理,以提高表格线的清晰度。然后,我们使用霍夫线变换检测表格线,并对表格线进行了聚类处理,以确定表格边界。最后,我们绘制了表格边界并显示了结果。 请注意,这只是表格识别的基本步骤之一。要实现完整的表格识别功能,您可能还需要在表格中进行字符识别和数据提取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值