为了检测和处理一张乐谱的图片,然后检测和处理每根五线谱,我进行如下操作:
我拍张照片,我们与水平组件在一起,与工作人员的线条保持独立,我们消除了不必要的组件和噪音,并使用HoughLinesP标记了线条,我们验证了线条是否彼此平行,以便随后使用通过作物关联不同的切割以获得不同的抗原谱。
最后我的问题是,对于其他五角星的检测和分离,您是否想到了其他更简单或更准确的方法?
附加的图像,使您可以看到如何对其进行进一步的切割处理。
现在我需要获得不同的五角星。 image pre processing
int offset_x = 50;
int offset_y = 50;
cv::Rect roi;
roi.x = offset_x;
roi.y = offset_y;
roi.width = horizontal.size().width - (offset_x * 2);
roi.height = horizontal.size().height - (offset_y * 2);
cv::Mat crop = horizontal(roi);
namedWindow("crop", WINDOW_NORMAL);
cv::imshow("crop", crop);
cv::waitKey(0);
//Use HougLines to detect de diferents lines of each pentagram
HoughLinesP(crop, lines, 1, CV_PI / 180, 80, 200, 10);
//We paint it
for (size_t i = 0; i < lines.size(); i++) // Draw the lines
{
line(crop, Point(lines[i][0], lines[i][1]),Point(lines[i][2], lines[i][3]), Scalar(255, 255, 255), 3, 3);
}
// the final result
namedWindow("Detected Lines", WINDOW_NORMAL);
imshow("Detected Lines", crop);
waitKey(0);
现在,我需要取出不同的五线谱以便从初始图像中提取它们。但是我想不起来怎么做....
答案 0 :(得分:0)
以下是一个教程,该教程完全可以完成您第一个算法的操作:https://docs.opencv.org/3.4.0/dd/dd7/tutorial_morph_lines_detection.html
我可以想象它比您的方法要简单一些。另外,在示例中显示了相反的情况,在该示例中,您只保留分数并完善它们,这应该是您想做的。