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

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

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

基本屬性

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

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

transpose 與 reshape

import numpy as np

# 一維數(shù)組transpose無(wú)意義
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個(gè) 3行 * 4列的二維數(shù)組
data = np.arange(24).reshape(2, 3, 4)
print(data)

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

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

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

舉個(gè)簡(jiǎn)單例子:

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)

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

  1. 第0個(gè)維度:720
  2. 第1個(gè)維度:540
  3. 第2個(gè)維度:3

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

  1. 第0個(gè)維度:3
  2. 第1個(gè)維度:720
  3. 第2個(gè)維度:540

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

應(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é)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了Python中的sort()方法使用基礎(chǔ)教程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    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)圖片相似度檢測(cè)

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

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

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

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

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

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

最新評(píng)論

水富县| 益阳市| 库尔勒市| 理塘县| 鄂州市| 余庆县| 大新县| 石首市| 江川县| 镶黄旗| 桦川县| 余干县| 龙南县| 苍山县| 土默特右旗| 辽中县| 临江市| 大余县| 文成县| 伊金霍洛旗| 临夏县| 仁怀市| 富裕县| 金阳县| 临清市| 曲沃县| 柏乡县| 固原市| 平阴县| 乐平市| 芦山县| 炉霍县| 扎囊县| 枣强县| 忻州市| 年辖:市辖区| 伊春市| 大石桥市| 松潘县| 金秀| 新巴尔虎右旗|