python熱量圖和灰度圖(python圖片灰度處理)

本文目錄一覽:

‘求助’Python怎麼判斷圖片是否為灰度圖

這裡判斷是否為灰度圖的標準是:每一個像素所對應的R、G、B的值是否相等。

def is_color_image(url):

im=Image.open(url)

pix=im.convert(‘RGB’)

width=im.size[0]

height=im.size[1]

oimage_color_type=”Grey Image”

is_color=[]

for x in range(width):

for y in range(height):

r,g,b=pix.getpixel((x,y))

r=int(r)

g=int(g)

b=int(b)

if (r==g) and (g==b):

pass

else:

oimage_color_type=’Color Image’

return oimage_color_type

怎麼用python顯示一張圖片

在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 這兩個庫操作圖片。本人偏愛 matpoltlib,因為它的語法更像 matlab。

一、matplotlib

1. 顯示圖片

複製代碼

import matplotlib.pyplot as plt # plt 用於顯示圖片

import matplotlib.image as mpimg # mpimg 用於讀取圖片

import numpy as np

lena = mpimg.imread(‘lena.png’) # 讀取和代碼處於同一目錄下的 lena.png

# 此時 lena 就已經是一個 np.array 了,可以對它進行任意處理

lena.shape #(512, 512, 3)

plt.imshow(lena) # 顯示圖片

plt.axis(‘off’) # 不顯示坐標軸

plt.show()

複製代碼

2. 顯示某個通道

複製代碼

# 顯示圖片的第一個通道

lena_1 = lena[:,:,0]

plt.imshow(‘lena_1’)

plt.show()

# 此時會發現顯示的是熱量圖,不是我們預想的灰度圖,可以添加 cmap 參數,有如下幾種添加方法:

plt.imshow(‘lena_1′, cmap=’Greys_r’)

plt.show()

img = plt.imshow(‘lena_1’)

img.set_cmap(‘gray’) # ‘hot’ 是熱量圖

plt.show()

複製代碼

3. 將 RGB 轉為灰度圖

matplotlib 中沒有合適的函數可以將 RGB 圖轉換為灰度圖,可以根據公式自定義一個:

複製代碼

def rgb2gray(rgb):

return np.dot(rgb[…,:3], [0.299, 0.587, 0.114])

gray = rgb2gray(lena)

# 也可以用 plt.imshow(gray, cmap = plt.get_cmap(‘gray’))

plt.imshow(gray, cmap=’Greys_r’)

plt.axis(‘off’)

plt.show()

複製代碼

4. 對圖像進行放縮

這裡要用到 scipy

複製代碼

from scipy import misc

lena_new_sz = misc.imresize(lena, 0.5) # 第二個參數如果是整數,則為百分比,如果是tuple,則為輸出圖像的尺寸

plt.imshow(lena_new_sz)

plt.axis(‘off’)

plt.show()

複製代碼

5. 保存圖像

5.1 保存 matplotlib 畫出的圖像

該方法適用於保存任何 matplotlib 畫出的圖像,相當於一個 screencapture。

plt.imshow(lena_new_sz)

plt.axis(‘off’)

plt.savefig(‘lena_new_sz.png’)

5.2 將 array 保存為圖像

from scipy import misc

misc.imsave(‘lena_new_sz.png’, lena_new_sz)

5.3 直接保存 array

讀取之後還是可以按照前面顯示數組的方法對圖像進行顯示,這種方法完全不會對圖像質量造成損失

np.save(‘lena_new_sz’, lena_new_sz) # 會在保存的名字後面自動加上.npy

img = np.load(‘lena_new_sz.npy’) # 讀取前面保存的數組

二、PIL

1. 顯示圖片

from PIL import Image

im = Image.open(‘lena.png’)

im.show()

2. 將 PIL Image 圖片轉換為 numpy 數組

im_array = np.array(im)

# 也可以用 np.asarray(im) 區別是 np.array() 是深拷貝,np.asarray() 是淺拷貝

3. 保存 PIL 圖片

直接調用 Image 類的 save 方法

from PIL import Image

I = Image.open(‘lena.png’)

I.save(‘new_lena.png’)

4. 將 numpy 數組轉換為 PIL 圖片

這裡採用 matplotlib.image 讀入圖片數組,注意這裡讀入的數組是 float32 型的,範圍是 0-1,而 PIL.Image 數據是 uinit8 型的,範圍是0-255,所以要進行轉換:

import matplotlib.image as mpimg

from PIL import Image

lena = mpimg.imread(‘lena.png’) # 這裡讀入的數據是 float32 型的,範圍是0-1

im = Image.fromarray(np.uinit8(lena*255))

im.show()

5. RGB 轉換為灰度圖

from PIL import Image

I = Image.open(‘lena.png’)

I.show()

L = I.convert(‘L’)

L.show()

python matlab畫灰度圖統計圖?

個人意見,一個圖裏面,一個橫坐標你是想怎樣對應多個縱坐標值喃,你還需要一個標準在圖裡表示某列里某個像素值的發佈情況,就有3個變量,xyz軸3D圖應該更清晰,或者每列裏面的每個像素值在xy軸里有一個區間,類似表格,該區間的顏色表示發佈多少情況。

Python熱力圖繪製方法—新手教程

# Python熱力圖繪製方法

熱力圖的使用場景有 

1.描述數據在空間的密集程度,常見有城市熱力圖,區域熱力圖

2.描述多個變量之間相關性高低程度

# step 1 準備數據集,讀取excel列表內容,usecols = index, 這裡是表裡的第一列不讀取。

index =range(1, 11)

dataset = np.array(pd.read_csv(r’C:\Users\Administrator\Desktop\heatmap.csv’, usecols=index))

# step 2  讀取excel行索引轉成列表,作為熱力圖的y軸標籤

a = (pd.read_csv(r’C:\Users\Administrator\Desktop\heatmap.csv’, usecols=[0]))

y_label =list(a.stack())

# step 3 讀取excel列索引轉成列表,作為熱力圖的x軸標籤

b = (pd.read_csv(r’C:\Users\Administrator\Desktop\heatmap.csv’))

column_index=(b.columns.tolist())

x_label = column_index[1:]

# 這一步是為了計算熱力圖的數據的最大值,可以進行標準化處理,也可以直接顯示數據,dataframe轉成list,從list裏面尋找最大值

dataset_max = (pd.read_csv(r’C:\Users\Administrator\Desktop\heatmap.csv’, usecols=index))

list1 = np.array(dataset_max.stack())

max_number =max(list1)

# step 4 開始繪製熱力圖

plt.figure(figsize=(14, 8))# 定義輸出圖像大小,annot參數決定是否在熱力圖上顯示數值,Vmax,Vmin表示最大最小值,cmap表示顏色

sns.heatmap(dataset, fmt=’.0f’, annot=True, vmin=0, vmax=max_number, cmap=’Reds’, yticklabels=y_label,

            xticklabels=x_label)

# 繪製標籤

plt.xlabel(‘This is x label’, labelpad=15)

plt.ylabel(‘This is y label’, labelpad=20)

plt.show()

怎麼用python進行簡單的圖像處理

所謂簡單的圖像處理,就是對像素數據進行點處理。

下面是具體步驟。

讀取圖片:

# -*- coding: utf-8 -*-

import cv2

import numpy as np

img = cv2.imread(“C:/Users/Administrator/Desktop/ball.png”)

cv2.imshow(“a”,img)

cv2.waitKey(0)

cv2.imshow(“a”,img)

打開一個圖片窗口。

python讀取圖片,實際上是讀取了離散的圖片數據:

print(img)

運行,就會給出圖片數據。

顯示反色圖片,只要進行簡單的計算:

255-img

這是2*img的效果。

分離通道,圖片的第一個通道是:

img[:,:,0]

成圖是灰度圖。

第二個通道的灰度圖:

img[:,:,1]

第三個通道的灰度圖:

img[:,:,2]

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/129296.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python for循環求1到100的積

    Python中的for循環可以方便地遍歷列表、元組、字典等數據類型。本文將以Python for循環求1到100的積為中心,從多個方面進行詳細闡述。 一、for循環語法 Pytho…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python編程二級證書考試相關現已可以上網購買

    計算機二級Python考試是一項重要的國家級認證考試,也是Python編程的入門考試。與其他考試一樣,Python編程二級證書的考生需要進入正式考試,而為了備考,這篇文章將詳細介紹…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29

發表回復

登錄後才能評論