首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在图像上添加文本(Python PyQt5)

如何在图像上添加文本(Python PyQt5)
EN

Stack Overflow用户
提问于 2019-07-13 09:20:36
回答 2查看 3.2K关注 0票数 1

如何在图像上添加文本?它可以放在右上、左上、右下角、左下角或中间,这不重要吗?

代码语言:javascript
运行
复制
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_())

这是我所做的,但我不能在图像上的文字。怎么才能解决这个问题呢?我搜索了很多次,但在这个问题上没有找到任何解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-13 11:11:09

试一试:

代码语言:javascript
运行
复制
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_())

票数 3
EN

Stack Overflow用户

发布于 2019-07-13 09:34:00

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

代码语言:javascript
运行
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57017820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档