Ine*_*pid 1 python png opencv image
我是OpenCV的新手,所以如果我的提问对您来说很愚蠢,请多多包涵。
我想删除这些边界,所以我想到了边缘检测,如果我可以将这些透明边界转换为白色,这将很容易做到。在文档中,我发现您可以执行以下操作:
img = cv2.imread("./Green/image-000.png", 1)
cv2.imwrite('../image-000.png', img)
Run Code Online (Sandbox Code Playgroud)
这会删除png图像的Alpha通道,但会将其变为黑色。是否有类似的东西使边界变白?还是有消除这些边界的更简单方法?如果您能帮助我,您会让我真的很高兴!
PS:我使用Python 2.7和OpenCV 3.4
您应该加载与图像-1,这就是IMREAD_UNCHANGED,即
img = cv2.imread("./Green/imgage-000.png", cv2.IMREAD_UNCHANGED)
Run Code Online (Sandbox Code Playgroud)
然后,您的图像将具有4个通道(BGRA),并且您可以使用Alpha通道蒙版将相应的部分变成白色:
alpha_channel = img[:, :, 3]
_, mask = cv.threshold(alpha_channel, 254, 255, cv.THRESH_BINARY) # binarize mask
color = img[:, :, :3]
new_img = cv.bitwise_not(cv.bitwise_not(color, mask=mask))
Run Code Online (Sandbox Code Playgroud)
我用透明的PNG测试了此代码,其中的颜色通道为黑色,并且信息位于透明度中:
嵌套bitwise_not很丑陋,但这是我发现使其起作用的唯一方法。
| 归档时间: |
|
| 查看次数: |
2503 次 |
| 最近记录: |