如何在图像上添加文本(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)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何让我的Buffered Image类在我的GUI中显示?