วิธีรับ Pixs ทั้งหมดโดยใช้ดัชนีบางอย่างจากอาร์เรย์รูปภาพ

Jan 18 2021

รูปร่างอาร์เรย์ของรูปภาพเป็น(540, 960, 3)ดังนี้:

img_rgb = [[[ 95  71  71]
  [ 95  71  71]
  [ 95  71  71]
  ...
  [182 171 181]
  [182 171 181]
  [182 171 181]]

 [[ 95  71  70]
  [ 95  71  70]
  [ 95  71  71]
  ...
  [183 172 182]
  [183 172 182]
  [183 172 182]]

 [[ 95  72  70]
  [ 95  71  70]
  [ 95  71  71]
  ...
  [183 172 182]
  [183 172 182]
  [183 172 182]]

 ...

 [[ 36  35  45]
  [ 36  35  45]
  [ 36  35  45]
  ...
  [ 49  45  50]
  [ 49  45  50]
  [ 49  45  50]]

 [[ 36  35  45]
  [ 36  35  45]
  [ 36  35  45]
  ...
  [ 49  45  50]
  [ 49  45  50]
  [ 49  45  50]]

 [[ 36  35  45]
  [ 36  35  45]
  [ 36  35  45]
  ...
  [ 49  45  50]
  [ 49  45  50]
  [ 49  45  50]]]

และฉันต้องการรับองค์ประกอบโดยindicesที่ระบุดัชนีแต่ละองค์ประกอบและสิ่งindicesนี้:

indices = [
 [0, 0], [0, 1], [0, 2]
]

ผลลัพธ์ที่คาดหวัง

[
  [ 95  71  71],
  [ 95  71  71],
  [ 95  71  71],
]

มีพ่วงคำถามที่คล้ายกันในการเชื่อมโยงผู้หนึ่งคืองูหลาม numpy 2D รวมอาร์เรย์กว่าดัชนีบางอย่างและอีกอย่างก็คือการหา (x, y) ดัชนีเฉพาะ (R, G, B) ค่าสีจากภาพที่เก็บไว้ใน ndarrays

มันได้เมื่อฉันพยายามคำถามหนึ่งโดยIndexError: too many indices for arrayimg_rgb[tuple(indices)]

คำตอบ

fountainhead Jan 18 2021 at 14:50

คุณเพียงแค่ต้อง indicestranspose

img_rgb[tuple(np.transpose(indices))]

np.tranpose()จะใช้งานได้แม้ว่าindicesจะเป็นเพียงรายการก็ตามเนื่องจากคาดว่าจะมีการป้อนโครงสร้าง "คล้ายอาร์เรย์"