pythonのcv2.HoughLinesP()
で傾きのない水平線(下にあるhoge.jpg
のような画像)を検出しています。線のy座標をリストから抽出したいのですが、今自分が思いついている方法が下にもあるとおり、ループで取り出す方法ですがもっと賢いアルゴリズムがはありますか?
python
1import cv2 2import nunpy as np 3 4img = cv2.imread('hoge.jpg') 5gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 6height, width = gray.shape 7threshold = int(width * 0.7) 8lines = cv2.HoughLinesP(gray, rho=1, theta=np.pi/360, threshold=threshold, 9 minLineLength=threshold, maxLineGap=5) 10 11yCoords = [] 12 13# 見てほしいのはここから 14 15for line in lines: 16 yCoords.append(line[0][1]) 17 18print(lines, yCoords, sep='\n\n')
出力はこうです:
[[[ 0 600 1919 600]] [[ 0 603 1919 603]] [[ 0 159 1919 159]] [[ 0 156 1919 156]] [[ 0 154 1919 154]] [[ 0 924 1919 924]] [[ 0 601 1919 601]] [[ 0 930 1919 930]] [[ 0 155 1919 155]] [[ 0 157 1919 157]] [[ 0 598 1919 598]] [[ 0 602 1919 602]] [[ 0 929 1919 929]] [[ 0 605 1919 605]] [[ 0 926 1919 926]] [[ 0 928 1919 928]] [[ 0 931 1919 931]] [[ 0 925 1919 925]] [[ 0 927 1919 927]] [[ 0 599 1919 599]] [[ 0 158 1919 158]]] [600, 603, 159, 156, 154, 924, 601, 930, 155, 157, 598, 602, 929, 605, 926, 928, 931, 925, 927, 599, 158]
もしこのアルゴリズムが一番いいと思ったらコメントしてください
あなたの回答
tips
プレビュー