程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python讀取顯示raw圖片+numpy基本用法記錄

編輯:Python

這次任務是拿到了幾張raw圖片,沒其他頭文件或信息,需要對raw圖片使用python打開並顯示

(作為了一個初學者,整天搞jpg、png,突然來了個raw,表示很頭大)

1.獲取raw圖片shape信息(高度、寬度、通道數)

通過第三方打開顯示,查找其信息,記錄下來,後面要用

網上所搜的各種raw轉jpg圖片的就算了吧,試過一兩個,都是失敗的

這裡推薦兩種方法,一個是軟件:ps,使用ps可以直接打開讀取raw圖片,打開時便會自動顯示高度寬度和通道數及位數(不過就目前來說,感覺ps是隨機匹配寬長,顯示的圖也不准確),如下圖,有需要也可以轉為其他格式,如jpg、png等

 另一個方法就是一個線上網站:Photopea | Online Photo Editor

超級好用!!!而且可以選各種不同的匹配形式,也可以預覽圖片,然後你可以選擇正確的匹配形式,對應的高寬等信息就是對應你圖片的

 (平時也挺好用的,可以各種圖片處理操作,如果需求不大都不需要ps了)

2.python圖片讀取

   有了高寬通道數信息,咱們就可以進行numpy圖像分析,最後通過opencv讀取圖像

import numpy as np
import cv2
# 注意到這個函數只能顯示uint16類型的數據,如果是uint8的數據請先轉成uint16。否則圖片顯示會出現問題。**
# image為array類型,多少維度都無所謂,直接操作全部元素
img = np.fromfile("D:/VScode/pyproject/PR/view/showRaw/1.raw", dtype=np.uint16)
print(img)
print("數組元素總數:",img.size) #打印數組尺寸,即數組元素總數
# /均值、標准差歸一化/
image = (img - np.average(img)) / np.std(img)
# ///
print(image)
imgData = image.reshape(288, 384, 1)
# 展示圖像
cv2.imshow('img',imgData)
cv2.waitKey()
cv2.destroyAllWindows()

其中我用了一些圖像歸一化的方法,我大概了解了一下有下面三種比較常用的,你們可以根據自己圖片嘗試一下,我自己這次圖片的歸一化用的效果比較好的是均值、標准差歸一化

# /“x-min/max-min”//
image = (img - np.min(img)) / (np.max(img) - np.min(img))
# ///
# ///simoid歸一化/
image = img
for i in range(size):
image[i] = 1.0 / (1 + np.exp(-float(img[i])))
# ///
# /均值、標准差歸一化/
image = (img - np.average(img)) / np.std(img)
# ///

 3.numpy圖片處理時一些基本用法

①np.fromfile

對raw圖片可以讀取並轉換為向量數組,方便我們後期進行處理

imgData2 = np.fromfile('D:/VScode/pyproject/PR/view/showRaw/2.raw', dtype='uint16')

②np.average:取平均值,有個np.mean的跟這個區別就是average可以加權平均

③np.std:去標准差

④np.random.randint(0,10,(4,3)):在0-10中隨機生成4x3的矩陣

⑤ np.hstack:向量拼接,raw圖像numpy讀取出來是向量形式,需要用到

⑥np.concatenate((a, b), axis=1):ab矩陣以列的形式拼接,加多1列 

rotation = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
trans = np.array([[7],
[8],
[0]])
z = np.concatenate((rotation, trans), axis=1)
[[1 2 3 7]
[4 5 6 8]
[7 8 9 0]]

4.圖像處理的一些指令

①image.shape:顯示圖像高寬通道數

②image.size:圖像數據長度

③image[y:y+h,x:x+w]:圖像的截取,xy為截取圖左上角起點

 目前所述都是個人在學習神經網絡過程中的一些記錄,僅供參考,有錯誤麻煩大佬在評論區指正,感謝!!!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved