如何在图像上添加文本(Python GUI PyQt5)[重复]

Posted

技术标签:

【中文标题】如何在图像上添加文本(Python GUI PyQt5)[重复]【英文标题】:How to add a text on image(Python GUI PyQt5) [duplicate] 【发布时间】: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 设计的? 尝试将图片添加为背景图片并在其上添加文字 【参考方案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 一起使用吗? 是的,你可以使用,但我不知道它的对错

以上是关于如何在图像上添加文本(Python GUI PyQt5)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

matlab GUI-如何给GUI中添加提示框

如何使用 Python 将文本添加到多个图像

如何让我的Buffered Image类在我的GUI中显示?

在 GUI 文本区域上添加和刷新文本?

如何在视频/图像上添加图像或文本(水印) - Flutter/Dart

如何在按钮上添加图像(左)和文本