Python读取显示raw图片+numpy基本用法记录

这次任务是拿到了几张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为截取图左上角起点

 目前所述都是个人在学习神经网络过程中的一些记录,仅供参考,有错误麻烦大佬在评论区指正,感谢!!!

猜你喜欢

转载自blog.csdn.net/hhb3329/article/details/126141962