最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

numpy數(shù)組transpose與圖像使用詳解

 更新時間:2025年09月02日 10:53:35   作者:trayvontang  
文章介紹numpy數(shù)組的基本屬性及三維數(shù)組transpose操作,通過調(diào)整維度順序?qū)GB分離,應(yīng)用在白平衡的灰度世界算法中

基本屬性

首先,了解一點(diǎn)numpy數(shù)組基本屬性。

屬性含義
narray.ndim秩,維數(shù),一維數(shù)組的秩為1,二維數(shù)組的秩為2
narray.shape維度表示,行數(shù)、列數(shù)等
narray.size元素總個數(shù), 等于shape屬性中元組元素的乘積
narray.dtype元素類型

transpose 與 reshape

import numpy as np

# 一維數(shù)組transpose無意義
data = np.arange(4)
print(data)
data = data.transpose()
print(data)


# 二維數(shù)組,橫縱坐標(biāo)互換
data = np.arange(8).reshape(4, 2)
print(data)
data = data.transpose()
print(data)

# 三維數(shù)組,可以理解為2個 3行 * 4列的二維數(shù)組
data = np.arange(24).reshape(2, 3, 4)
print(data)

# transpose其實(shí)接受參數(shù),不過對于一二維數(shù)組沒有必要
# 參數(shù)可以是0,1,2,可以想象成對應(yīng)x,y,z坐標(biāo)
data = data.transpose(2, 1, 0)
print(data)

一二維數(shù)組沒有什么好說,三維數(shù)組的transpose找對應(yīng)關(guān)系稍微復(fù)雜,不過相比于尋找具體的對應(yīng)關(guān)系,我覺得更好理解的是:

  1. 第0個維度:對應(yīng)有多少個二維數(shù)組
  2. 第1個維度:對應(yīng)每個二維數(shù)組的行數(shù)
  3. 第2個維度:對應(yīng)每個二維數(shù)組的列數(shù)

舉個簡單例子:

img = Image.open(r"G:\tmp\wbc.jpg")
img_arr = np.array(img).astype(np.uint8)
print(img_arr.shape)
print(img_arr)

img_arr = img_arr.transpose(2, 0, 1)
print(img_arr.shape)
print(img_arr)

一個540 * 720的圖片,通過numpy轉(zhuǎn)為數(shù)組的shape是(720,540,3),相當(dāng)于720個540行3列的數(shù)組,參數(shù)對應(yīng)關(guān)系:

  1. 第0個維度:720
  2. 第1個維度:540
  3. 第2個維度:3

我們可以通過transpose(2, 0, 1),把數(shù)組變?yōu)榈诙€參數(shù)變?yōu)榈?個參數(shù),第0個參數(shù)變?yōu)榈谝粋€,第一個參數(shù)變?yōu)榈诙€,于是:

  1. 第0個維度:3
  2. 第1個維度:720
  3. 第2個維度:540

這樣數(shù)組的shape就變?yōu)?3,720,540),相當(dāng)于3個720行,540列的二維數(shù)組,這樣我們就成功的將RGB分離出來,方便進(jìn)一步計算。

應(yīng)用

白平衡中的灰度世界算法:

import numpy as np
from PIL import Image


def gray_world(src_img_path, dest_img_path):
    """
    灰度世界算法
    """
    src_img = Image.open(src_img_path)
    # 圖形轉(zhuǎn)numpy數(shù)組
    image_arr = np.array(src_img).astype(np.uint32)
    # 分離RGB
    image_arr = image_arr.transpose(2, 0, 1)

    avg_red = np.average(image_arr[0])
    avg_green = np.average(image_arr[1])
    avg_blue = np.average(image_arr[2])

    gray = (avg_red + avg_green + avg_blue) / 3

    kred = gray / avg_red
    kgreen = gray / avg_green
    kblue = gray / avg_blue

    image_arr[0] = np.minimum(image_arr[0] * kred, 255)
    image_arr[1] = np.minimum(image_arr[1] * kgreen, 255)
    image_arr[2] = np.minimum(image_arr[2] * kblue, 255)

    # 重新合并RGB
    image_arr = image_arr.transpose(1, 2, 0)
    # numpy數(shù)組轉(zhuǎn)圖像
    img = Image.fromarray(image_arr.astype('uint8')).convert('RGB')
    img.save(dest_img_path)

if __name__ == '__main__':
    img_path = r"G:\tmp\2d.jpg";
    gray_world(img_path, r"G:\tmp\gray_world.jpg")

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?變量教程字節(jié)對象與字符串

    Python?變量教程字節(jié)對象與字符串

    這篇文章主要介紹了Python變量教程字節(jié)對象與字符串,字節(jié)對象是字節(jié)序列,而字符串是字符序列,字節(jié)對象在內(nèi)部是機(jī)器可讀的形式,字符串只是人類可讀的形式
    2022-08-08
  • 一文詳解凱撒密碼的原理及Python實(shí)現(xiàn)

    一文詳解凱撒密碼的原理及Python實(shí)現(xiàn)

    凱撒密碼是古羅馬愷撒大帝用來對軍事情報進(jìn)行加密的算法,它采用了替換方法對信息中的每一個英文字符循環(huán)替換為字母表序列該字符后面第三個字符。本文主要為大家講解了凱撒密碼的原理及實(shí)現(xiàn),需要的可以參考一下
    2022-08-08
  • 基于Python實(shí)現(xiàn)全自動二維碼識別

    基于Python實(shí)現(xiàn)全自動二維碼識別

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)全自動二維碼識別功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • 按日期打印Python的Tornado框架中的日志的方法

    按日期打印Python的Tornado框架中的日志的方法

    這篇文章主要介紹了按日期打印Python的Tornado框架中的日志的方法,需要的朋友可以參考下
    2015-05-05
  • Python中的sort()方法使用基礎(chǔ)教程

    Python中的sort()方法使用基礎(chǔ)教程

    這篇文章主要介紹了Python中的sort()方法使用基礎(chǔ)教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • Python 迭代器與生成器實(shí)例詳解

    Python 迭代器與生成器實(shí)例詳解

    這篇文章主要介紹了Python 迭代器與生成器實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • python主要用于哪些方向

    python主要用于哪些方向

    在本篇文章里小編給大家整理了一篇關(guān)于python用于的方向的相關(guān)文章,有需要的閱讀下吧。
    2020-07-07
  • 詳解如何使用opencv實(shí)現(xiàn)圖片相似度檢測

    詳解如何使用opencv實(shí)現(xiàn)圖片相似度檢測

    這篇文章主要為大家詳細(xì)介紹了如何使用opencv實(shí)現(xiàn)圖片相似度檢測,文中的示例代碼講解詳細(xì),對于我們學(xué)習(xí)人工智能有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • Tornado高并發(fā)處理方法實(shí)例代碼

    Tornado高并發(fā)處理方法實(shí)例代碼

    這篇文章主要介紹了Tornado高并發(fā)處理方法實(shí)例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • python pandas時序處理相關(guān)功能詳解

    python pandas時序處理相關(guān)功能詳解

    這篇文章主要介紹了python pandas時序處理相關(guān)功能詳解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07

最新評論

潼关县| 二手房| 克山县| 伊宁市| 金乡县| 昌都县| 城步| 田林县| 泰和县| 雷州市| 伊宁市| 麻栗坡县| 嘉兴市| 海阳市| 鹰潭市| 永善县| 怀安县| 台东县| 武宣县| 新泰市| 宜兰县| 仲巴县| 林州市| 四子王旗| 尖扎县| 诸城市| 类乌齐县| 汉源县| 梨树县| 迭部县| 新余市| 杂多县| 徐水县| 河源市| 六枝特区| 新和县| 沈阳市| 比如县| 梁河县| 栾城县| 广东省|