本文目錄一覽:
- 1、‘求助’Python怎麼判斷圖片是否為灰度圖
- 2、怎麼用python顯示一張圖片
- 3、python matlab畫灰度圖統計圖?
- 4、Python熱力圖繪製方法—新手教程
- 5、怎麼用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