python cv2.imread()几点认识

在探索如何自制遥感云影数据集的过程中,处理图片时遇到了问题,主要出现在cv2.imread()这个函数上。

制作云影图片时,代码中保存了四个通道的信息,imwrite为一个png图片,shape为[512,512,4]。但是在用imread函数读入之后,显示为[512,512,3],原地迷惑了。
之后我就想,会不会除了RGB三个常规通道,另外一个没有读进来。查了下,明白叫alpha通道,检索相关信息,才知道imread()函数有第二个参数,后找到这篇博客
opencv中imread第二个参数的含义
作者罗列了imread函数中第二个参数‘flag’的不同值的不通用法
在这里插入图片描述
评论有人说个别错误,我自己测试了一下,结果如下
在这里插入图片描述
所有不同值都不能以原深度读入。我觉得应该是不对的,但反复测试几遍都是这个结果,目前不知哪儿出了问题。针对保持图片原深度,继续检索,发现了这篇
opencv IMREAD_ANYDEPTH 可读取和保存任意位深度的图片
在这里插入图片描述
将第二个参数的数字换成文字,其实数字-1~4分别对应的就是不同的语句,只是给简化了表达。此方法看上去应该是ok的,但我测试的时候还是只是8位深度的。
另外在搜索过程中,论坛上很多人提到了对于cv2.imread()函数第二个参数的CV_LOAD_IMAGE_ANYDEPTH这种写法,包括上面提到的第一篇博客中也有
在这里插入图片描述
在测试这些语句时,都会报错。注意是
CV_LOAD_IMAGE_ANYDEPTH这种形式会报错,但是
cv2.IMREAD_ANYDEPTH这种形式不会报错。
后来又找到这篇博客
‘CV_LOAD_IMAGE_GRAYSCALE’ is not defined{PY}
在这里插入图片描述
他说这种语句已经被python的cv接口淘汰了。

目前我自己的实践中对于如何保持原位深度还存在问题,不过没涉及到我对于数据集的理解。通过flag=-1能够正确读入alpha通道,进而将代码逻辑顺通,然后看懂了数据集的制作方法。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值