【问题标题】:How to obtain from a musical score the different pentagrams(openCV)如何从乐谱中获得不同的五角星(openCV)
【发布时间】:2019-01-13 19:52:09
【问题描述】:

为了检测和处理一张乐谱的图片,然后是每个五线谱的图片,我进行如下操作:

我拍照,我们与水平组件保持单独与工作人员的线条保持一致,我们消除了不必要的组件和噪音,我们用 HoughLinesP 标记线条,我们验证线条彼此平行,然后通过裁剪关联不同的切割以获得不同的 imgen 谱表。

最后我的问题是,对于不同五角星的检测和分离,你有没有其他更简单,或者更准确的方法?

附上图片,以便您了解如何处理它以进行进一步切割。

现在我需要获得不同的五角星。 image pre processing

image post 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);

现在我需要取出不同的五线谱以便从初始图像中提取它们。但我想不出该怎么做....

【问题讨论】:

    标签: c++ opencv object-recognition


    【解决方案1】:

    这里有一个教程,它与您的第一个算法完全一样:https://docs.opencv.org/3.4.0/dd/dd7/tutorial_morph_lines_detection.html
    我可以想象它比你的方法简单一点。此外,在示例中显示了相反的情况,您只保留分数并对其进行改进,这就是您想要做的。

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-15
      相关资源
      最近更新 更多