[英]Python & OpenCV - Trying to turn transparent pixels into white nontransparent pixels
我对使用 OpenCV 进行数据处理比较陌生。 对于机器学习项目,我正在尝试处理图像,以便所有透明像素都将变成白色的不透明像素供我的 GAN 使用。 但是,我在尝试处理它时不断收到错误消息。 这是我下面的代码/
img = cv2.imread(dirfName, cv2.IMREAD_UNCHANGED) (Note Dirftname is a defined variable)
for col in img:
for row in img[col]:
if(img[col,row] == (0,0,0,0)):
img[col,row] = (255,255,255,255)
cv2.imwrite((fCropPath + fNameIndent + fname), new_img)
错误与 if 语句有关,它指出: ValueError:具有多个元素的数组的真值不明确。 使用 a.any() 或 a.all()
请注意您在 itterations、 row
和col
中的语法不是索引。
import cv2
import numpy as np
img = cv2.imread(dirfName, cv2.IMREAD_UNCHANGED)
for col in img:
for row in col:
if(row.__eq__(0).all()): # This is what you want
row += 255
cv2.imwrite((fCropPath + fNameIndent + fname), new_img)
row.__eq__(0).all()
np.all(row == 0)
row.__eq__(0).all()
等价于np.all(row == 0)
此外,更好的做法是对循环进行矢量化:
import cv2
import numpy as np
img = cv2.imread(dirfName, cv2.IMREAD_UNCHANGED)
ind = np.equal(img, 0).all(axis=2)
img[ind] = np.array([255]*4)
cv2.imwrite((fCropPath + fNameIndent + fname), new_img)
上面的代码做了完全相同的事情,但是向量化了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.