【问题标题】:How to add a text on image(Python GUI PyQt5) [duplicate]如何在图像上添加文本(Python GUI PyQt5)[重复]
【发布时间】:2019-07-13 09:20:36
【问题描述】:

如何在图片上添加文字?它可以放在右上角 左上角 右下角 左下角还是居中 没关系?

class Example(QWidget):

    def __init__(self):
       super().__init__()

    self.im = QPixmap("./images.png")
    self.label = QLabel()
    # self.label.setText("sdsdsd")
    # self.label.setStyleSheet("color:black")

    self.label.setPixmap(self.im)

    self.grid = QGridLayout()
    self.grid.addWidget(self.label,1,1)
    self.setLayout(self.grid)

    self.setGeometry(50,50,320,200)
    self.setWindowTitle("\n")
    self.show()

if name == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

这是我所做的,但我无法在图像上显示文字。如何解决这个问题?我用谷歌搜索了很多次,但我没有找到任何关于这个问题的解决方案。

【问题讨论】:

  • 你试过opencv了吗?
  • 不,它只是用于 GUI。但我认为 opencv 是为 AI 设计的?
  • 尝试将图片添加为背景图片并在其上添加文字

标签: python python-3.x pyqt5


【解决方案1】:

试试看:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui  import *
from PyQt5.QtWidgets import *

class Label(QLabel):
    def __init__(self):
        super().__init__()

    def paintEvent(self, e):
        qp = QPainter()
        qp.begin(self)

        image  = QImage('im.png')
        qp.drawImage(QPoint(), image)

        pen = QPen(Qt.red)
        pen.setWidth(2)
        qp.setPen(pen)        

        font = QFont()
        font.setFamily('Times')
        font.setBold(True)
        font.setPointSize(24)
        qp.setFont(font)

        qp.drawText(150, 250, "Hello World !")

        qp.end()


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(50, 50, 660, 620)
        self.setWindowTitle("Add a text on image")

        self.label = Label() 

        self.grid = QGridLayout()
        self.grid.addWidget(self.label)
        self.setLayout(self.grid)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

【讨论】:

    【解决方案2】:

    您可以使用 opencv 在图像上放置文本。 我用 cv2 修改了你的代码

    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    import cv2
    img = cv2.imread('/path/to/image/download.jpeg')
    cv2.putText(img, "sample_text", (50,20), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 1)
    cv2.imwrite("download.jpeg",img)
    class Example(QWidget):
        def __init__(self):
            super(Example, self).__init__()
            self.im = QPixmap("./download.jpeg")
    
            self.label = QLabel()
            self.label.setPixmap(self.im)
            self.grid = QGridLayout()
            self.grid.addWidget(self.label,1,1)
            self.setLayout(self.grid)
            #self.title.setMinimumHeight(self.pixmap.height())
    
            self.setGeometry(50,50,320,200)
            #self.setText("hai")
            self.setWindowTitle("\n")
            self.show()
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        window = Example()
        window.setGeometry(600, 100, 200, 30)
        window.show()
        sys.exit(app.exec_())
    

    (或)

    使用这个答案来获得一些想法:

    How to add both an image and text to a QLabel

    【讨论】:

    • 我可以和 pyqt5 一起使用吗?
    • 是的,你可以使用,但我不知道它的对错
    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    相关资源
    最近更新 更多