2017-08-11 20 views
1

私はOpenCVの3.0.0とPythonの2.7.35でOpenCVの-のpythonに取り組んでいます多次元配列で値を出力/返すにはどうすればよいですか?

import numpy as np 
import cv2 

img = cv2.imread('C:\\Users\\J\\Desktop\\image.jpg') 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

corners = cv2.goodFeaturesToTrack(gray,25,0.01,10) 

print corners 

これは私に

[[[ 335. 263.]] 

[[ 306. 254.]] 

[[ 337. 253.]] 

[[ 349. 262.]] 

[[ 507. 361.]] 

[[ 300. 264.]] 

[[ 420. 250.]] 

[[ 362. 252.]] 

[[ 375. 261.]] 

[[ 322. 254.]] 

[[ 409. 260.]] 

[[ 545. 294.]] 

[[ 505. 398.]] 

[[ 388. 252.]] 

[[ 493. 315.]] 

[[ 578. 376.]] 

[[ 480. 376.]] 

[[ 510. 375.]] 

[[ 396. 261.]] 

[[ 493. 376.]] 

[[ 532. 376.]] 

[[ 575. 357.]] 

[[ 540. 360.]] 

[[ 514. 307.]] 

[[ 401. 251.]]] 

を返しているこんにちは私は、これは多次元配列とどのように知っていますこの配列の値を(x、y)の形式で出力できますか?私はこれには簡単な答えがあると思いますが、私はPythonを使用しているのはかなり長い時間です。前もって感謝します !

+1

'corners.reshape(-1、2)'?より具体的には、 'list(map(tuple、corners.reshape(-1、2)))' –

+0

与えられたデータに対して期待される出力を提供できますか?それが助けになるだろう。 –

+0

(362,252)、(375,261)、(322,254)...などのように印刷したいだけです。それとも、これらの値をそれぞれx1、y1、x2、y2として割り当てるのが実際には良いのですが... –

答えて

0
import numpy as np 
import cv2 
img = cv2.imread('C:\\Users\\J\\Desktop\\image.jpg') 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
corners = cv2.goodFeaturesToTrack(gray,25,0.01,10) 

corners = np.int0(corners) 
for corner in corners: 
    x,y = corner.ravel() 
    print(x,y) 
+1

正確にnp.int0が何をしているのか尋ねることはできますか?私はそれを数回見ましたが、完全に理解できませんでした。 –

+0

@JimmySuh 'float'値を' integer'値に変換します。 'int0'はそれぞれ' 32ビット 'と' 64ビット 'システムの' int32'や 'int64'と同じです。 –

関連する問題