如何在图像上添加文本?它可以放在右上、左上、右下角、左下角或中间,这不重要吗?
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_())这是我所做的,但我不能在图像上的文字。怎么才能解决这个问题呢?我搜索了很多次,但在这个问题上没有找到任何解决方案。
发布于 2019-07-13 11:11:09
试一试:
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_())

发布于 2019-07-13 09:34:00
您可以使用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_())(或)
用这个答案得到一些想法:
https://stackoverflow.com/questions/57017820
复制相似问题