在用python寫學校的信息隱藏實驗時,圖片保存格式的坑,我跳了兩個小時,在此總結一下,防止後人繼續入坑
保存圖片
python保存圖片的函數有(其他還有PIL)
plt.imsave("picture.png",img) # png無損
plt.imsave("picture.png",img) # png無損
cv2.imwrite("picture.jpg",img) # jpg有損壓縮
無損保存圖片的格式是png格式
在信息隱藏中,通過cv2.imwrite或plt.imsave保存png圖片,可以將加密後的數據無變動的存儲到圖像中
讀取圖片
通過cv2.imread或plt.imread讀取png圖片,可以按原格式讀取加密後的圖片
cv2讀取的圖片通道順序爲BGR,而我們常用的格式是RGB,需要置換通道順序
'''
cv2方法
'''
import cv2
src = cv2.imread("target.png") #讀取彩色*BGR*圖,根據需要轉成RGB
src = src[:,:,[2,1,0]] # BGR -> RGB 以B爲例,要把第一個通道1對應到第二個圖片的3上,即從0到2(需要從0開始,下標-1)
src = cv2.imread("target.png",cv2.IMREAD_GRAYSCALE) #讀取灰度圖
'''
matplot方法
'''
import matplotlib.pyplot as plt
src = plt.imread("target.png") # 默認彩色通道
plt.imshow('lena_1', cmap='Greys_r') # 顯示灰度圖
彩色轉灰度
灰度轉換
image = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
實例
讀取bmp彩色圖片,轉爲灰度圖加密後圖像原數據:
使用jpg有損壓縮,讀取後的圖片數據:
src = cv2.imread("source.bmp",cv2.IMREAD_GRAYSCALE)
...
cv2.imwrite("target.jpg", dst)
使用png無損壓縮,讀取後的圖片數據:
cv2.imwrite("target.png", dst)
信息隱藏技術使用python注意使用png無損壓縮格式保存圖片
- 灰度轉換參考網址鏈接
Python OpenCV | cv2.cvtColor() method