今天在读取png,在将png读入之后,想做一个/255并保存为.tif格式,出现大问题。
- 写入图片
import cv2
import numpy as np
from google.colab.patches import cv2_imshow
img =cv2.imread("/content/drive/MyDrive/mathcup/B/t1/107.png",2)# 1彩色2灰度
img=img/255
cv2.imwrite("/content/t1.tif",img,[int(cv2.IMWRITE_PNG_COMPRESSION), 0])
- 读取图片,这里报错
import pandas as pd
import numpy as np
import cv2
img =cv2.imread("/content/t1.tif")
print(img)#这里输出为None,没有读取到图片
img=np.array(img[:,:,0])
img=pd.DataFrame(img)
img.to_csv("/content/t0_test.csv")
- 写入以后,打开发现不是0,1写入的,如果是只有0,1写入,讲道理应该是全黑色的。
- 经过持之以恒的排错,发现,这里存在问题
import pandas as pd
import numpy as np
import cv2
img =cv2.imread("/content/drive/MyDrive/mathcup/B/t1/107.png",2)
print(img.shape)
print(img.dtype)
print(img.min())
print(img.max())
img=img/255
print(img.shape)
print(img.dtype)
print(img.min())
print(img.max())
cv2.imwrite("/content/t1.tif",img,[int(cv2.IMWRITE_PNG_COMPRESSION), 0])
(500, 600)
uint8# 注意这里是int
0
255
(500, 600)
float64# 注意这里是浮点数
0.0
1.0
True
- 类型转换
img =cv2.imread("/content/drive/MyDrive/mathcup/B/t1/107.png",2)
print(img.shape)
print(img.dtype)
print(img.min())
print(img.max())
img=img/255
img=np.array(img).astype(int)# 类型转换为int
print(img.shape)
print(img.dtype)
print(img.min())
print(img.max())
cv2.imwrite("/content/t1.tif",img,[int(cv2.IMWRITE_PNG_COMPRESSION), 0])
(500, 600)
uint8
0
255
(500, 600)
int64
0
1
True
成功