前提・実現したいこと
Opencvを使ってピアノの楽譜を読み込み、五線譜(横線)を検出し、検出した直線を緑色にしたいです。
こちらのサイトを参考に同じコードで同じ画像で実行したのですが、サイトのような実行結果にならないです。(若干追加したり変更の箇所はありますが、グレースケールやハフ変換の所は同じです。)
該当のソースコード
Python
1import cv2 2import math 3 4try: 5 img = cv2.imread(r'C:\temp\music\a.jpg') 6 7 if img is None: 8 print('ファイルを読み込めません。') 9 import sys 10 sys.exit() 11 12 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # グレースケール変換 13 retval, binarized = cv2.threshold(gray, 224, 255, cv2.THRESH_BINARY_INV) # 2値化 14 cv2.imshow('binarized', binarized) 15 16 def detect_lines(img, original_image): 17 lines = cv2.HoughLinesP(img, rho = 10, theta = math.pi / 180.0 * 90, 18 threshold = 200, minLineLength = 30, maxLineGap = 5) 19 if lines is not None: 20 for (x1, y1, x2, y2) in lines[0]: 21 cv2.line(original_image, (x1, y1), (x2, y2), (0, 255, 0), 1) 22 23 detect_lines(binarized, img) 24 cv2.imshow('score', img) 25 26 cv2.waitKey(0) 27 cv2.destroyAllWindows() 28except: 29 import sys 30 print("Error:", sys.exc_info()[0]) 31 print(sys.exc_info()[1]) 32 import traceback 33 print(traceback.format_tb(sys.exc_info()[2]))
試したこと
cv2.HoughLinesP内のパラメータの数値などを変えてみた。
補足情報
Windows 10pro、Spyder(Python3.7)で実施
回答1件
あなたの回答
tips
プレビュー