所以我试着阅读下面的图片 .
我已经能够制作自适应阈值并检测旋转角度(我不确定是否必须旋转图像)
我正在努力的是检测包含表单的矩形 . 我尝试了不同的方法,比如opencv的findContours() . 它能找到的最大轮廓是一个带名字的盒子 .
之后我决定使用HoughLinesP,但它找到了很多行,我不知道如何过滤它们 . 检测矩形以校正表格也很方便,之后我将能够轻松地阅读答案 . 所以我已经在考虑在角落添加黑色方形标记了 . 但是也许有人可以给我一些如何做到正确的想法 .
HoughLinesP(我使用nodejs,但我可以读取python和c):
const imageSize = {
width: gray.cols,
height: gray.rows
};
const threshold_min = 200;
const ratio_min_max = 1;
const edges = gray.canny(threshold_min,threshold_min*ratio_min_max,3);
const minLineLength = imageSize.width / 4,
maxLineGap = 10,
threshold = 100;
const lines = edges.houghLinesP(1, Math.PI/180, threshold, minLineLength, maxLineGap);
//draw lines on the output
for( let i = 0; i < lines.length; i++ ) {
const l = lines[i];
const {x,y,z,w} = l;
output.drawLine(
cv.Point(w, x),
cv.Point(y, z),
new cv.Vec(Math.random()*255,Math.random()*255,Math.random()*255),
// new cv.Vec(0,0,255),
2,
// 1
);
}
//end draw lines
1 回答
好的,所以我能够通过扩张来检测矩形:
最大轮廓代码:
在那之后,我能够突出角落并进行进一步的视角修复 .