Python OpenCV Canny 边缘检测器:带 PyQt5 UI 的图像和视频处理
这是一个使用 Python OpenCV 和 PyQt5 构建的 Canny 边缘检测器,它具有一个功能丰富的 UI,可用于处理图像和视频。应用程序允许用户选择文件、调整参数并实时查看结果。
安装库
首先,需要安装必要的库和工具。使用 pip 安装 Python、OpenCV 和 PyQt5:
pip install opencv-python pyqt5
核心代码
以下代码示例展示了如何使用 OpenCV 的 Canny 边缘检测算法对图像进行处理:
import cv2
# 加载图像
img = cv2.imread('image.jpg')
# 处理图像
edges = cv2.Canny(img, 100, 200)
# 显示结果
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
PyQt5 UI
现在,我们将这个代码片段整合到一个 PyQt5 应用程序中,创建交互式 UI:
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QSlider, QPushButton, QFileDialog
from PyQt5.QtGui import QPixmap
import cv2
class MainWindow(QWidget):
def __init__(self):
super().__init__()
# 创建 UI
self.initUI()
def initUI(self):
# 添加文件选择按钮
self.file_btn = QPushButton('选择文件', self)
self.file_btn.move(20, 20)
self.file_btn.clicked.connect(self.file_dialog)
# 添加第一个滑块(阈值 1)
self.slider1 = QSlider(self)
self.slider1.setOrientation(1) # 垂直方向
self.slider1.setGeometry(20, 60, 30, 200)
self.slider1.setMinimum(0)
self.slider1.setMaximum(255)
self.slider1.setValue(100)
# 添加第二个滑块(阈值 2)
self.slider2 = QSlider(self)
self.slider2.setOrientation(1) # 垂直方向
self.slider2.setGeometry(60, 60, 30, 200)
self.slider2.setMinimum(0)
self.slider2.setMaximum(255)
self.slider2.setValue(200)
# 添加图像显示区域
self.label = QLabel(self)
self.label.setGeometry(100, 20, 400, 400)
# 设置窗口大小和标题
self.setGeometry(100, 100, 520, 440)
self.setWindowTitle('Canny 边缘检测器')
def file_dialog(self):
# 打开文件选择对话框
fname = QFileDialog.getOpenFileName(self, '选择文件', '.', 'Image files (*.jpg *.png)')
if fname[0]:
# 加载图像
img = cv2.imread(fname[0])
# 处理图像
edges = cv2.Canny(img, self.slider1.value(), self.slider2.value())
# 显示处理后的图像
pixmap = QPixmap.fromImage(cv2.cvtColor(edges, cv2.COLOR_BGR2RGB))
self.label.setPixmap(pixmap)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
扩展功能
为了实现更多功能和更复杂的 UI,可以进行以下扩展:
- 视频处理: 使用
cv2.VideoCapture()加载视频,并在 UI 中显示实时边缘检测结果。 - 保存结果: 添加按钮以将处理后的图像或视频保存到磁盘。
- 参数调整: 添加更多滑块或输入框,以便更精细地控制 Canny 算法参数。
- 图像预览: 在选择文件后,在 UI 中显示原始图像的预览。
- 自定义颜色: 允许用户选择边缘检测结果的颜色。
通过这些扩展功能,你可以构建一个强大且灵活的 Canny 边缘检测工具。
原文地址: https://www.cveoy.top/t/topic/ntAQ 著作权归作者所有。请勿转载和采集!