Python 图像处理: 使用 QFileDialog 打开并显示图像
这段代码定义了一个名为 open_image 的方法,用于在一个图像处理程序中打开图像文件并显示在界面上。
代码解释:
-
def open_image(self):定义了一个名为open_image的方法,其中self表示对象本身。 -
file_name, _ = QFileDialog.getOpenFileName(self, '打开图像', '', 'Image Files(*.jpg *.png *.bmp)')使用QFileDialog打开文件对话框,让用户选择图像文件。参数分别代表:self: 对象本身。'打开图像': 对话框的标题。'': 默认打开的目录。'Image Files(*.jpg *.png *.bmp)': 文件过滤器,只显示 JPG、PNG 和 BMP 文件。 该语句返回一个元组,其中file_name是选择的文件名,_是一个占位符,表示我们不需要使用第二个返回值。
-
print('file name:', file_name)打印出选择的文件名。 -
if file_name:判断选择的文件名是否为空,如果不为空则继续执行后续代码。 -
if self.cap is not None:判断对象中是否有cap属性,如果有则释放该属性。cap属性可能是用于视频流的捕捉器,在打开图像时需要释放。 -
self.image = cv2.imread(file_name)读取选择的图像文件,将其存储在self.image中。cv2.imread是 OpenCV 库中的函数,用于读取图像文件。 -
print('image:', self.image)打印出读取的图像信息。 -
if self.image is None:判断读取的图像是否为空,如果是则打印出错误信息并结束方法。 -
qimage = QImage(self.image.data, self.image.shape[1], self.image.shape[0], QImage.Format_RGB888).rgbSwapped()将读取的图像转换为QImage格式,并将其存储在qimage变量中。self.image.data: 图像数据。self.image.shape[1]: 图像宽度。self.image.shape[0]: 图像高度。QImage.Format_RGB888: 图像格式为 RGB888。rgbSwapped(): 将 RGB 颜色通道顺序转换为 BGR,因为 OpenCV 使用 BGR 格式。
-
pixmap = QPixmap.fromImage(qimage)将QImage格式的图像转换为QPixmap格式,并将其存储在pixmap变量中。QPixmap是 Qt 库中的类,用于存储和显示图像。 -
self.image_label.setPixmap(pixmap)将pixmap显示在界面上的image_label标签中。 -
if self.timer:判断对象中是否有timer属性,如果有则取消该属性。timer属性可能是用于视频播放的定时器,在打开图像时需要释放。 -
self.timer = None将timer属性设置为空,释放视频播放定时器。
原文地址: https://www.cveoy.top/t/topic/nzv7 著作权归作者所有。请勿转载和采集!