Как получить из музыкальной партитуры разные пентаграммы (openCV)
Для обнаружения и обработки изображения партитуры, а затем каждого посоха я действую следующим образом:
Я делаю снимок, и мы остаемся с горизонтальными компонентами, чтобы остаться наедине с линиями персонала, мы удаляем ненужные компоненты и шум, и мы помечаем линии с помощью HoughLinesP, мы проверяем, что линии параллельны друг другу, чтобы впоследствии связать их по культуре различные сокращения, чтобы получить различные посохи imgen.
Наконец, мой вопрос: вы думаете о каком-то другом более простом способе или более точном для обнаружения и разделения различных пентаграмм?
Прикрепленное изображение, чтобы вы могли видеть, как оно будет обработано для дальнейшей резки.
Теперь мне нужно получить разные пентаграммы. предварительная обработка изображения
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);
Теперь мне нужно вынуть различные посохи, чтобы извлечь их из исходного изображения. Но я не могу придумать, как это сделать....
1 ответ
Вот учебник, который делает именно то, что делает ваш первый алгоритм: https://docs.opencv.org/3.4.0/dd/dd7/tutorial_morph_lines_detection.html
Я могу представить, что это немного проще, чем ваш подход. Кроме того, противоположный случай показан в примере, где вы только сохраняете свои оценки и уточняете их, предположительно, что вы хотите сделать.