gpt4 book ai didi

java - 使用 JavaCV 在图像中进行模式检测

转载 作者:搜寻专家 更新时间:2023-11-01 03:52:02 26 4
gpt4 key购买 nike

我正在尝试创建一个代码,它最终应该能够识别图片中的某些图案/形状。

当我试图在图片上绘制形状时遇到了一些麻烦(在本例中为“Output3”)。节目似乎还没有结束。我认为 while 函数有一个无限循环。该程序不显示 output3。有什么问题?

输入图像:

enter image description here

OUTPUT2 图片:

enter image description here


public class Hello {

/**
* @param args
* @throws IOException
*/

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub

// Memory storage
CvMemStorage memory = CvMemStorage.create();
CvSeq contours = new CvSeq(null);

// Display original contour image .png, then GRAYSCALE and display in CanvasFrame
IplImage image = cvLoadImage("contour.jpg", CV_LOAD_IMAGE_GRAYSCALE);
CanvasFrame canvas = new CanvasFrame("Output", 1);
CanvasFrame canvas2 = new CanvasFrame("Output2", 1);
CanvasFrame canvas3 = new CanvasFrame("Output3", 1);
canvas.showImage(image);

// thresholding
cvSmooth(image, image, CV_BLUR, 9 , 9, 2, 2);
cvThreshold(image, image, 155, 255, CV_THRESH_BINARY);

cvCanny(image, image, 20*7*7, 40*7*7, 7);
cvDilate(image, image, null, 1);


canvas2.showImage(image);
cvSaveImage("output2.jpg", image);

// finding contours
cvFindContours(image, memory, contours, Loader.sizeof(CvContour.class), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));

while(contours != null && !contours.isNull()) {
if(contours.elem_size() > 0) {
CvSeq approx = cvApproxPoly(contours, Loader.sizeof(CvContour.class), memory, CV_POLY_APPROX_DP, (int) cvContourPerimeter(contours)*0.02, 0);
cvDrawContours(image, approx, CvScalar.BLUE, CvScalar.BLUE, -1,1, CV_AA);
}
contours.h_next();
}

canvas3.showImage(image);
}

我的目标是拍照,将其发送到应返回的程序:

  • 这是一个正方形
  • 这是一个长方形
  • 这是一个圆圈
  • 这是一个六边形

最佳答案

我不使用 JavaCV,但我会这样做:

  1. 转换为灰度级,甚至更好的二值图像(因为背景是白色的)
  2. 连接组件标记以分离每个形状
  3. 使用形状索引对形状进行分类。在攻读博士学位期间,我使用形状索引来区分矩形、圆盘、三角形和平行四边形。你只需要采取一些措施来区分正方形和矩形,或者圆盘和六边形。

关于java - 使用 JavaCV 在图像中进行模式检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23767818/

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