Pythonpyqt6打开目录中的其中一张图片,点击按钮生成图片词云
时间: 2024-02-22 12:59:15 浏览: 131
好的,那么你可以参考下面的代码实现:
```python
from PyQt6.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt6.QtGui import QPixmap
from wordcloud import WordCloud
import jieba
import numpy as np
from PIL import Image
import sys
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
# ...省略界面布局代码...
# 绑定事件,点击打开文件夹按钮时触发
self.pushButton.clicked.connect(self.openFolder)
# 绑定事件,点击生成词云按钮时触发
self.pushButton_2.clicked.connect(self.wordCloud)
def openFolder(self):
# 打开文件夹选择对话框
folder_path = QFileDialog.getExistingDirectory(self.centralwidget, '选择文件夹')
if folder_path:
# 获取文件夹中的第一张图片路径,并显示在界面上
self.image_path = folder_path + '/' + os.listdir(folder_path)[0]
pixmap = QPixmap(self.image_path).scaled(self.label.width(), self.label.height())
self.label.setPixmap(pixmap)
def wordCloud(self):
# 读取图片,生成蒙版
mask = np.array(Image.open(self.image_path))
# 读取文本文件,分词
with open('language.txt', 'r', encoding='utf-8') as fp:
word_list = jieba.cut(fp.read())
result = " ".join(word_list)
# 生成词云
wc = WordCloud(
font_path='msyh.ttf',
background_color='white',
contour_width=1,
contour_color='steelblue',
mask=mask,
max_words=200
)
wc.generate_from_text(result)
# 将词云转换为图片格式,并显示在界面上
st = wc.to_image()
stt = QPixmap.fromImage(ImageQt(st))
self.label_2.setPixmap(stt.scaled(self.label_2.width(), self.label_2.height()))
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec())
```
这里我们添加了一个打开文件夹的按钮,用于让用户选择包含图片的文件夹。当用户选择了文件夹后,我们获取其中的第一张图片路径,并显示在界面上。
当用户点击生成词云的按钮后,我们读取 `language.txt` 文件中的文本内容,使用 `jieba` 库进行中文分词,然后根据选中的图片生成词云,并将词云转换为图片格式,显示在界面上。需要注意的是,这里我们使用了 `numpy` 和 `PIL` 库读取和操作图片。
阅读全文