作者:绝望的贵族_500 | 来源:互联网 | 2023-09-18 11:56
Imtryingtocreateacodewhichshouldattheendrecognizesomepatternshapeinapicture.我正在尝试
I'm trying to create a code which should at the end recognize some pattern/shape in a picture.
我正在尝试创建一个代码,最终应该识别图片中的某些图案/形状。
I've had some trouble when I tried to draw the shape on the pic ("Output3" in this case). The program seems not to end. I think there is a infinite loop with the while function. The program doesn't display the output3. What's the issue?
当我试图在图片上绘制形状时我遇到了一些麻烦(在这种情况下为“Output3”)。该计划似乎没有结束。我认为while函数有一个无限循环。该程序不显示output3。有什么问题?
INPUT image:
![enter image description here](https://img1.php1.cn/3cd4a/24e5b/bdf/3b591af8e1b6a3ed.jpeg)
OUTPUT2 image:
![enter image description here](https://img1.php1.cn/3cd4a/24e5b/bdf/072d188f69570e9d.jpeg)
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);
}
My goal is to take a photo, send it to the program which should return:
我的目标是拍照,将其发送到应该返回的程序:
- This is a square
这是一个正方形
- This is a rectangle
这是一个矩形
- This is a circle
这是一个圆圈
- This is an hexagon
这是一个六边形
1 个解决方案