亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

item() 函數在訪問像素值時如何工作?

item() 函數在訪問像素值時如何工作?

喵喔喔 2021-10-10 18:56:33
我正在閱讀 OpenCV python 教程,他們說 NumPy 數組函數 item() 是訪問圖像中像素值的最佳方式,但我不明白它的作用。import cv2import numpy as npimg = cv2.imread('image.jpg')print(img.item(10, 10, 2)) # I don't know what the item() function does/what it's parameters are
查看完整描述

1 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

來自文檔:numpy.ndarray.item()將數組的一個元素復制到標準 Python 標量并返回它。


換句話說,調用img.item(i)會為您獲取i數組中索引表示的值的副本,類似于img[i]但不同之處在于它將它作為 Python 標量而不是數組返回。按照文檔,獲取 Python 標量有助于加快對數組元素的訪問,并利用 Python 的優化數學對值進行算術運算。


一個例子:


>>> x = np.random.randint(9, size=(3, 3))

>>> x

array([[1, 8, 4],

      [8, 7, 5],

      [2, 1, 1]])

>>> x.item((1,0))

8

>>> x[1,0] # both calls seem to return the same value, but...

8

>>> type(x[1,0]) # Numpy's own int32

<class 'numpy.int32'>

>>> type(x.item((1,0))) # Python's standard int

<class 'int'>

item只接受一個參數 can None,它只適用于單項數組, an int_type,它的作用類似于平面索引,以及 a tupleof int_type,它被解釋為數組的多維索引。


回到您的具體問題,OpenCV 建議 item并itemset在使用單個像素值時,因為numpy已針對數組計算進行了優化,因此不鼓勵訪問單個項目。


所以,而不是做:


import cv2

import numpy as np


img = cv2.imread('image.jpg')

img[0, 0] = 255 # Setting a single pixel

px = img[0, 0]  # Getting a single pixel

做:


img.itemset((0, 0), 255)

px = img.item((0, 0))


查看完整回答
反對 回復 2021-10-10
  • 1 回答
  • 0 關注
  • 264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號