首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从乐谱中获得不同的五角星(OpenCV)

如何从乐谱中获得不同的五角星(OpenCV)
EN

Stack Overflow用户
提问于 2019-01-14 03:52:09
回答 1查看 67关注 0票数 0

为了检测和处理一个分数的图片,然后是每个staves的图片,我进行如下操作:

我拍摄了这张照片,我们留在水平组件上,与员工的线条保持独立,我们消除了不必要的组件和噪音,我们用HoughLinesP标记这些线条,我们验证这些线条彼此平行,随后通过裁剪不同的切割来获得imgen的不同横档。

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

附加的图像,以便您可以看到它将如何处理,以进一步切割。

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

image post processing

代码语言:javascript
复制
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);

现在我需要去掉不同的staves,以便从初始图像中提取它们。但是我不知道该怎么做……

EN

回答 1

Stack Overflow用户

发布于 2019-01-17 17:27:23

这里有一个教程,它做了你的第一个算法做的事情:https://docs.opencv.org/3.4.0/dd/dd7/tutorial_morph_lines_detection.html

我可以想象它比你的方法简单一点。此外,相反的情况显示在示例中,您只保留您的分数并对其进行改进,这是您想要做的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54172619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档