Имеется 2 ошибки:
- Вы должны передать
bytesPerLine
в QImage - У вас есть «n» больше в
trainOpenImg
, когда вы устанавливаетевыравнивание.
def displayImage(self):
qformat =QImage.Format_Indexed8
if len(self.image.shape)==3:
if self.image.shape[2] ==4:
qformat=QImage.Format_RGBA8888
else:
qformat=QImage.Format_RGB888
img = QtGui.QImage(self.image.data,
self.image.shape[1],
self.image.shape[0],
self.image.strides[0], # <--- +++
qformat)
img = img.rgbSwapped()
self.trainOpenImg.setPixmap(QPixmap.fromImage(img))
self.trainOpenImg.setAlignment(QtCore.Qt.AlignCenter)
С другой стороны, в IDE возникают проблемы с обработкой определенных типов ошибок и только с запуском кода, поэтому в таких случаях рекомендуется запускать его в CMD или терминале.так как они дают вам больше информации, например, в этом случае сообщение об ошибке было:
Traceback (most recent call last):
File "test.py", line 20, in loadClicked
self.loadImage(fname)
File "test.py", line 26, in loadImage
self.displayImage()
File "test.py", line 36, in displayImage
img=QtGui.QImage(self.image.data,self.image.shape[1],self.image[0],QtGui.QImage.Format_RGB888)
TypeError: arguments did not match any overloaded call:
QImage(): too many arguments
QImage(QSize, QImage.Format): argument 1 has unexpected type 'memoryview'
QImage(int, int, QImage.Format): argument 1 has unexpected type 'memoryview'
QImage(bytes, int, int, QImage.Format): argument 3 has unexpected type 'numpy.ndarray'
QImage(sip.voidptr, int, int, QImage.Format): argument 3 has unexpected type 'numpy.ndarray'
QImage(bytes, int, int, int, QImage.Format): argument 3 has unexpected type 'numpy.ndarray'
QImage(sip.voidptr, int, int, int, QImage.Format): argument 3 has unexpected type 'numpy.ndarray'
QImage(List[str]): argument 1 has unexpected type 'memoryview'
QImage(str, format: str = None): argument 1 has unexpected type 'memoryview'
QImage(QImage): argument 1 has unexpected type 'memoryview'
QImage(Any): too many arguments
Aborted (core dumped)