Converting QPixmap to grayscale

拥有回忆 提交于 2020-01-01 19:18:24

问题


I'm trying to convert QPixmap image to grayscale. However, I got an error for all tried solution.

The first try:

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)

Error :

TypeError: bad argument type for built-in operation.

The second try:

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)

Error :

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

回答1:


You can use convertToFormat() that can convert between QImage formats.

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)

I don't know about the first error (without the full Traceback it's hard to see what is the source of the problem), but the second one happens because you're using wrong parameters for the initialization: if you provide a QImage you can't add other parameters (as the last error reports).



来源:https://stackoverflow.com/questions/59223743/converting-qpixmap-to-grayscale

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!