我仍然是pdfCreator.makeReport(fileName: filename, task: self.task, completion: {success in
// any chance to get my progress to update a spinner for example?
if success == true {
// file is here
}
}
的新手,并且在编写lambda以便在这种情况下做我想做的事情时遇到了麻烦。由于数组中的数据,lambda可能无法正常工作?
我在Qt5中使用numpy
获得了一些像素值,使用了Python中的QImage
:
PyQT
像素数据看起来像[[[B G R A]]]:
ptr = self.myPhoto.bits()
ptr.setsize(self.myPhoto.byteCount())
pixels = np.asarray(ptr).reshape(self.myPhoto.height(), self.myPhoto.width(), 4)
我希望它看起来像[[[R G B A]]]:
[[[ 100 0 2 255]
[ 100 0 2 255]
[ 100 1 1 255]
...,
[ 2 3 0 255]
[ 1 2 0 255]
[ 1 2 0 255]]]
编辑:从数组中移除逗号
此外,是否可以通过重塑调用而不是使用lambda post过程来执行此操作?
这些问题很有意思,但我仍然无法将它们粘在一起以获得我想要的东西:
答案 0 :(得分:2)
一种可能的解决方案是使用rgbSwapped(),此方法将RGB转换为BGR:
self.myPhoto = self.myPhoto.rgbSwapped()
ptr = self.myPhoto.bits()
ptr.setsize(self.myPhoto.byteCount())
pixels = np.asarray(ptr).reshape(self.myPhoto.height(), self.myPhoto.width(), 4)
使用slicing
ptr = self.myPhoto.bits()
ptr.setsize(self.myPhoto.byteCount())
pixels = np.asarray(ptr).reshape(self.myPhoto.height(), self.myPhoto.width(), 4)
r = np.copy(pixels[:,:,0])
pixels[:, :, 0] = pixels[:,:,2]
pixels[:, :, 2] = r
答案 1 :(得分:1)
这个解决方案怎么样?您可以在通过此
发送之前使用tolist()order = [1,0,2,3]
test = [[[100,0,2,255],
[100,0,2,255],
[100,1,1,255]]]
print(test)
for i in range(0,len(test)):
for j in range(0,len(test[i])):
temp = test[i][j]
temp = [temp[k] for k in order]
test[i][j] = temp
print(test)