python - 我想用原始位深度保存我的调整大小/缩放opencv图像?
问题描述
import cv2
import numpy as np
# load input image:
input = cv2.imread("image.png") #image.png size has 1.48MB & bit depth: 8
# scaling:
scaled_img = cv2.resize(input,None,fx=0.5,fy=0.5,)
cv2.imshow("Scaling-Linear Interpolation", scaled_img)
#saving the img:
cv2.imwrite("image_resize.png", scaled_img) # 1.66 MB & bit depth: 24
我想知道为什么位深度会从原始图像发生变化。并且还知道如何根据用户进行更改。
解决方案
opencv imread 始终读取为 3 通道输入,因此它为加载的灰度图像添加了 2 个相同的通道。
您可以使用 grayscale 或未更改标志加载为灰度,或使用 cv2.cvtColor 转换为灰度。
所以目前您正在将单通道 8 位图像文件加载为 3x8=24 位图像。保存为 png 后,它是一个 24 位图像文件。
推荐阅读
- java - Java 的 keytool 不提示输入密钥密码
- angular - elementRef的宽度改变时如何改变模板
- javascript - String.prototype.replace() 有问题吗?
- php - Woo 丢失密码表单重定向到 wp-admin reauth=1
- php - php中的子字符串修剪列表的结束标签并打破dom
- ios - 无法看到 swiftui 的预览窗口和显示我的 mac 的模拟器
- javascript - 如何检查数组中的键是否存在而没有错误代码?
- kubernetes - 集群中的网络结构是什么样的?
- c++ - 未编译具有 3rd 方库的子目录
- reactjs - 将函数传递给另一个组件得到错误,这是未定义的反应 js