我正在尝试将QPixmap图像转换为灰度。但是,所有尝试的解决方案都出现错误。
第一次尝试:
def convertCv2ToQimage(self, cv2image):
height, width = cv2image.shape
return QtGui.QImage(cv2image.copy().data, width, height, width, QtGui.QImage.Format_Grayscale8)
result = pixmap.copy(r)
Q_image = result.toImage()
raw_img = cv2.imread(Q_image)
gray_img = cv2.cvtColor(raw_img, cv2.COLOR_BGR2GRAY)
final_result = self.convertCv2ToQimage(gray_img)
pixmap = QtGui.QPixmap.fromImage(final_result)
self.Changed_view.emit(pixmap)
错误:
TypeError:内置操作的错误参数类型。
第二次尝试:
result = pixmap.copy(r)
Q_image = QtGui.QPixmap.toImage(result)
qimage = QtGui.QImage(Q_image, Q_image.width, Q_image.height, QtGui.QImage.Format_Grayscale8)
pixmap = QtGui.QPixmap.fromImage(qimage)
self.Changed_view.emit(pixmap)
错误:
TypeError: arguments did not match any overloaded call: QImage():
too many arguments QImage(QSize, QImage.Format): argument 1 has
unexpected type 'QImage' QImage(int, int, QImage.Format): argument 1
has unexpected type 'QImage' QImage(bytes, int, int, QImage.Format):
argument 1 has unexpected type 'QImage' QImage(sip.voidptr, int,
int, QImage.Format): argument 1 has unexpected type 'QImage'
QImage(bytes, int, int, int, QImage.Format): argument 1 has unexpected
type 'QImage' QImage(sip.voidptr, int, int, int, QImage.Format):
argument 1 has unexpected type 'QImage' QImage(List[str]): argument
1 has unexpected type 'QImage' QImage(str, format: str = None):
argument 1 has unexpected type 'QImage' QImage(QImage): too many
arguments QImage(Any): too many arguments
答案 0 :(得分:0)
您可以使用convertToFormat()
来在QImage格式之间进行转换。
result = pixmap.copy(r)
Q_image = QtGui.QPixmap.toImage(result)
grayscale = image.convertToFormat(QtGui.QImage.Format_Grayscale8)
pixmap = QtGui.QPixmap.fromImage(grayscale)
self.Changed_view.emit(pixmap)
我不知道第一个错误(没有完整的Traceback,很难看到问题的根源),但是第二个错误发生的原因是初始化时使用了错误的参数:如果提供一个QImage您不能添加其他参数(作为最后的错误报告)。