python3+pyqt5+opencv3简单使用(转载)

关于python3下搭建pyqt5(pycharm)参考这条链接

对于pyqt的使用个人比较建议ui设计与逻辑功能分开开发。

下面介绍下简单的使用(通过左侧的目录可直接跳转到相应模块):

ui界面的建立

通过pycharm的Tools->External Tools->QtDesigner打开界面设计窗口(本文以创建一个Main Window为例)。

通过拖拽可以简单的设计界面,设计好后保存UI文件(本文创建的文件名为GUI),对UI文件点击鼠标反键选择External Tools->PyUIC,会生成一个对应UI界面的GUI.py文件。

接下来为了让UI设计文件与逻辑功能文件分开,在新建一个py文件,导入刚生成的GUI.py中的 Ui_MainWindow。

  1.  
    import sys
  2.  
    import cv2
  3.  
    from PyQt5 import QtCore, QtGui, QtWidgets
  4.  
    from PyQt5.QtCore import *
  5.  
    from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
  6.  
    from PyQt5.QtGui import *
  7.  
     
  8.  
    from GUI import Ui_MainWindow # 导入创建的GUI类
  9.  
     
  10.  
    class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
  11.  
     
  12.  
    def __init__(self):
  13.  
    super(mywindow, self).__init__()
  14.  
    self.setupUi(self)
  15.  
     
  16.  
    if __name__ == '__main__':
  17.  
    app = QtWidgets.QApplication(sys.argv)
  18.  
    window = mywindow()
  19.  
    window.show()
  20.  
    sys.exit(app.exec_())

OK!一个超级简单的UI设计以及UI的调用全部完成。

接下来再写点基础UI开发中常用到的功能:

PyQt窗口界面位置以及透明度调节

下面介绍几个函数用来调节窗口界面的位置以及界面边框和背景的隐藏。

在逻辑功能文件的初始化中进行设置:

  1.  
    import sys
  2.  
    import cv2
  3.  
    from PyQt5 import QtCore, QtGui, QtWidgets
  4.  
    from PyQt5.QtCore import *
  5.  
    from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
  6.  
    from PyQt5.QtGui import *
  7.  
     
  8.  
    from main_window import Ui_MainWindow # 导入创建的GUI类
  9.  
     
  10.  
    class mywindow(QtWidgets.QMainWindow, Ui_MainWindow):
  11.  
    def __init__(self):
  12.  
    super(mywindow, self).__init__()
  13.  
    self.setupUi(self)
  14.  
     
  15.  
    # setting main window geometry
  16.  
    desktop_geometry = QtWidgets.QApplication.desktop() # 获取屏幕大小
  17.  
    main_window_width = desktop_geometry.width() # 屏幕的宽
  18.  
    main_window_height = desktop_geometry.height() # 屏幕的高
  19.  
    rect = self.geometry() # 获取窗口界面大小
  20.  
    window_width = rect.width() # 窗口界面的宽
  21.  
    window_height = rect.height() # 窗口界面的高
  22.  
    x = (main_window_width - window_width) // 2 # 计算窗口左上角点横坐标
  23.  
    y = (main_window_height - window_height) // 2 # 计算窗口左上角点纵坐标
  24.  
    self.setGeometry(x, y, window_width, window_height) # 设置窗口界面在屏幕上的位置
  25.  
     
  26.  
    # 无边框以及背景透明一般不会在主窗口中用到,一般使用在子窗口中,例如在子窗口中显示gif提示载入信息等等
  27.  
            self.setWindowFlags(Qt.FramelessWindowHint)  # 无边框
  28.  
            self.setAttribute(Qt.WA_TranslucentBackground)  # 背景透明
  29.  
     

Pyqt中的常用小控件

QPushbutton的简单使用

首先打开QtDesigner通过鼠标添加一个pushbutton,双击进行更改pushbutton的text。

接下来对pushbutton反键选择Change objectName进行修改,这个名称是在逻辑功能设计时调用的名称。重要!

修改完之后进行保存,记得每次修改后都要对UI文件反键进行External Tools->PyUIC操作对GUI.py文件进行更新。

接着进入逻辑功能文件,添加pushbutton对应的响应函数与槽连接。

设计pushbutton点击对应的响应函数:

  1.  
    class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
  2.  
     
  3.  
    def __init__(self):
  4.  
    super(mywindow, self).__init__()
  5.  
    self.setupUi(self)
  6.  
     
  7.  
    def pushbutton_fuction(self): # pushbutton对应的响应函数
  8.  
    # do some things

添加槽连接:

  1.  
    class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
  2.  
     
  3.  
    def __init__(self):
  4.  
    super(mywindow, self).__init__()
  5.  
    self.setupUi(self)
  6.  
     
  7.  
    self.one_pushButton.clicked.connect(self.pushbutton_fuction) # one_pushButton是对应的objectName
  8.  
    # 将点击事件与槽函数进行连接
  9.  
    def pushbutton_fuction(self):
  10.  
    # do some things

QLabel与opencv读取并显示图片

首先添加一个QLabel,修改text内容以及Change objectName.

接下来我们要实现通过点击一个pushbutton在QLabel中显示一张图片。

  1.  
    class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
  2.  
     
  3.  
    def __init__(self):
  4.  
    super(mywindow, self).__init__()
  5.  
    self.setupUi(self)
  6.  
     
  7.  
    self.one_pushButton.clicked.connect(self.pushbutton_fuction)
  8.  
     
  9.  
    def pushbutton_fuction(self):
  10.  
    Im = cv2.imread('***.jpg') # 通过Opencv读入一张图片
  11.  
    image_height, image_width, image_depth = Im.shape # 获取图像的高,宽以及深度。
  12.  
    QIm = cv2.cvtColor(Im, cv2.COLOR_BGR2RGB) # opencv读图片是BGR,qt显示要RGB,所以需要转换一下
  13.  
    QIm = QImage(QIm.data, image_width, image_height, # 创建QImage格式的图像,并读入图像信息
  14.  
    image_width * image_depth,
  15.  
    QImage.Format_RGB888)
  16.  
    self.image_label.setPixmap(QPixmap.fromImage(QIm)) # 将QImage显示在之前创建的QLabel控件中

如果想让图片适应QLabel的大小,在 __init__中添加一行代码:

self.image_label.setScaledContents(True)

如果想自定义QLabel的大小以及位置,可以用:

self.image_label.setGeometry(x, y, width, height)

QLineEdit的读取与写入

QLineEdit控件常用的就是读取与写入两个功能:

  1.  
    self.my_lineEdit.text() # 读取QLineEdit中的内容
  2.  
    self.my_lineEdit.setText('show some text') # 将字符串写入QLineEdit中
  3.  
    self.my_lineEdit.clear() # 清除QLineEdit中的信息

QCheckBox的使用

QCheckBox主要是检查其勾选状态,或者连接改变状态触发事件,常用函数如下:

  1.  
    self.my_checkbox.stateChanged.connect(self.related_function) # 将checkbox状态变化事件连接相应函数
  2.  
     
  3.  
    self.my_checkbox.isChecked() # 检查checkbox是否被勾选
  4.  
     
  5.  
    self.my_checkbox.setCheckState(QtCore.Qt.Unchecked) # 将checkbox状态设置为未勾选状态
  6.  
    # QtCore.Qt.Checked 为勾选状态

QCombo box的使用

首先通过QtDesigner将Comb box控件托至界面中,双击Combo box控件在弹出的界面中点击左下角的加号添加选项:

获取Combo box选择信息的常用方法主要有两种,一种是获取选项的index一种是直接获取选项的文本。

  1.  
    self.image_type_comboBox.currentIndex() # 获取当前选项的Index(int)
  2.  
    self.image_type_comboBox.currentText() # 获取当前选项的文本(Qstring)

QMovie的使用

QMovie可将gif动态图在label中进行显示。用起来也非常简单。

  1.  
    Movie = QMovie('time.gif') # 载入Gif图,注意QMovie在PyQt5.QtCore内
  2.  
    self.movie_label.setMovie(Movie) # 将gif显示在gif中
  3.  
    Movie.start() # 启动gif
  4.  
    Movie.stop() # 停止gif

pyqt界面的布局与资源文件的载入

在界面开发过程中若不对界面进行布局则导致界面缩放过程中各控件不会跟着调整使得界面非常的难看,该部分由于图片较多,故单独写在一个博文里,详情见链接

pyqt中的常用小功能

通过QFileDialog选择文件或者文件夹

  1.  
    directory = QFileDialog.getExistingDirectory(self,
  2.  
    "选取文件夹",
  3.  
    "D:/") # 打开路径为D盘,若不指定路径,默认打开当前py文件所在文件夹
  1.  
    fileName, filetype = QFileDialog.getOpenFileName(self,
  2.  
    "选取文件",
  3.  
    "C:/",
  4.  
    "Image Files (*.jpg);;Text Files (*.txt)") # 设置文件扩展名过滤,
  5.  
    # 注意用双分号间隔

QMessageBox简单用法

information框:

QMessageBox.information(self, 'Information', '提示消息')

question框:

  1.  
    reply = QMessageBox.question(self,
  2.  
    "question",
  3.  
    "选择是或否",
  4.  
    QMessageBox.Yes | QMessageBox.No)

DateTime获取当前时间命名文件

通常保存图片或者文件时,会经常纠结如何命名文件,别想了直接用时间命名吧!

  1.  
    time = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') # import datetime
  2.  
    save_file_name = time + '.jpg'
  3.  
    cv2.imwrite(save_file_name, save_image)

PyQt菜单栏的创建

首先打开Qt Designer,在界面的最上端双击“Type Here”输入“File(&F)”后按回车键,创建一级菜单,如图所示,(&F)表示通过“Alt + F”快捷键直接打开。同理创建二级菜单等。

创建好菜单后在右侧menuFile_F一级菜单下可以看到相应menu名称,例如图中创建的Open file二级菜单对应的名称为actionOpen_file_O

接下来在逻辑功能文件中的__init__函数下进行槽连接即可。

self.actionOpen_file_O.triggered.connect(self.open_file_function)

PyQt底部状态栏

状态栏的使用主要是显示一些信息,便于使用。主要使用两个函数:

  1.  
    self.statusBar().showMessage() # 显示字符串
  2.  
    self.statusBar().clearMessage() # 清除字符串

PyQt创建子界面

首先新建一个UI文件(Widget)sub_window.py以及相应的逻辑功能文件sub_main.py。

创建相应的逻辑文件sub_main.py(要将创建的子UI界面导入):

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
from PyQt5.QtGui import *

from sub_window import Ui_Form # 导入子UI界面

class secondwindow(QtWidgets.QWidget, Ui_Form): # 创建子UI类

def __init__(self):
super(secondwindow, self).__init__()
self.setupUi(self)

接着在主逻辑文件中导入子类,并进行实例化:

  1.  
    import sys
  2.  
    import cv2
  3.  
    from PyQt5 import QtCore, QtGui, QtWidgets
  4.  
    from PyQt5.QtCore import *
  5.  
    from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
  6.  
    from PyQt5.QtGui import *
  7.  
     
  8.  
    from GUI import Ui_MainWindow
  9.  
    from sub_main import secondwindow # 导入子UI类
  10.  
     
  11.  
    class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
  12.  
     
  13.  
    def __init__(self):
  14.  
    super(mywindow, self).__init__()
  15.  
    self.setupUi(self)
  16.  
     
  17.  
    self.second_window = secondwindow() # 实例化子界面
  18.  
    self.one_pushButton.clicked.connect(pushbutton_fuction) # 槽函数连接
  19.  
     
  20.  
    def pushbutton_fuction(self):
  21.  
    self.second_window.show() # 通过点击按钮弹出子界面
  22.  
     
  23.  
    if __name__ == '__main__':
  24.  
    app = QtWidgets.QApplication(sys.argv)
  25.  
    window = mywindow()
  26.  
    window.show()
  27.  
    sys.exit(app.exec_())

注意:本示例创建的子窗口继承自QWidget,是非模态化的窗口(可以同时在子窗口和主窗口上进行操作)。若要创建一个模态化的窗口(只有在关闭子窗口后才能对主窗口进行操作),需要继承自QDialog,实例化并打开窗口代码如下:

  1.  
    self.second_window = secondwindow() # 实例化子界面,注意secondwindow继承自QDialog
  2.  
    self.second_window.exec_() # 打开子窗口,注意和非模态化不同

创建pyqt信号并进行连接

在主逻辑文件中创建pyqt信号传递到子窗口中:

  1.  
    import sys
  2.  
    import cv2
  3.  
    from PyQt5 import QtCore, QtGui, QtWidgets
  4.  
    from PyQt5.QtCore import *
  5.  
    from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
  6.  
    from PyQt5.QtGui import *
  7.  
     
  8.  
    from GUI import Ui_MainWindow
  9.  
    from sub_main import secondwindow
  10.  
     
  11.  
    class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
  12.  
    emit_image_signal = pyqtSignal(QImage) # 创建pyqt信号,指定传递的变量类型为QImage
  13.  
     
  14.  
    def __init__(self):
  15.  
    super(mywindow, self).__init__()
  16.  
    self.setupUi(self)
  17.  
     
  18.  
    self.second_window = secondwindow() # 实例化子界面
  19.  
     
  20.  
    self.one_pushButton.clicked.connect(pushbutton_fuction)
  21.  
    self.emit_image_signal.connect(self.second_window.show_label) # 将pyqt信号连接到
  22.  
    # 子窗口的show_label()函数
  23.  
     
  24.  
    def pushbutton_fuction(self):
  25.  
    Im = cv2.imread('***.jpg') # 通过Opencv读入一张图片
  26.  
    image_height, image_width, image_depth = Im.shape # 获取图像的高,宽以及深度。
  27.  
    QIm = cv2.cvtColor(Im, cv2.COLOR_BGR2RGB) # opencv读图片是BGR,qt显示要RGB,所以需要转换一下
  28.  
    QIm = QImage(QIm.data, image_width, image_height, # 创建QImage格式的图像,并读入图像信息
  29.  
    image_width * image_depth,
  30.  
    QImage.Format_RGB888)
  31.  
    self.second_window.show() # 弹出子窗口
  32.  
    self.emit_image_signal.emit(QIm) # 释放pyqt信号
  33.  
     
  34.  
    if __name__ == '__main__':
  35.  
    app = QtWidgets.QApplication(sys.argv)
  36.  
    window = mywindow()
  37.  
    window.show()
  38.  
    sys.exit(app.exec_())

在子逻辑文件中接收pyqt信号并绘制图像:

  1.  
    class secondwindow(QtWidgets.QWidget, Ui_Form): # 创建子UI类
  2.  
     
  3.  
    def __init__(self):
  4.  
    super(secondwindow, self).__init__()
  5.  
    self.setupUi(self)
  6.  
     
  7.  
    def show_label(self, QIm)
  8.  
    self.image_label.setPixmap(QPixmap.fromImage(QIm)) # 将传递进来的图片显示在创建好的QLabel控件中

pyqt鼠标事件

使用鼠标事件首先要开启鼠标跟踪,接着重写鼠标事件:

  1.  
    class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
  2.  
     
  3.  
    def __init__(self):
  4.  
    super(mywindow, self).__init__()
  5.  
    self.setupUi(self)
  6.  
     
  7.  
    self.setMouseTracking(True) # 开启鼠标跟踪
  8.  
    self.centralwidget.setMouseTracking(True)
  9.  
    self.image_label.setMouseTracking(True) # 在image_label中开启鼠标跟踪
  10.  
     
  11.  
    def mouseMoveEvent(self, a0: QtGui.QMouseEvent): # 鼠标移动事件
  12.  
    # a0.x() -> x坐标 ; a0.y() -> y坐标
  13.  
     
  14.  
    def mousePressEvent(self, a0: QtGui.QMouseEvent): # 鼠标点击事件
  15.  
    if a0.button() == Qt.LeftButton: # 按下鼠标左键
  16.  
    # do something
  17.  
    if a0.button() == Qt.RightButton: # 按下鼠标右键
  18.  
    # do something
  19.  
    if a0.button() == Qt.MidButton: # 按下鼠标中间
  20.  
    # do something
  21.  
     
  22.  
    def mouseReleaseEvent(self, a0: QtGui.QMouseEvent): # 鼠标释放事件
  23.  
    # do something

pyqt多线程的简单使用

pyqt多线程的使用,主要是先创建一个线程类,接着在主线程中进行实例化并开启线程。

首先创建一个线程类,新建一个py文件:

  1.  
    import cv2
  2.  
    from PyQt5 import QtCore, QtGui, QtWidgets
  3.  
    from PyQt5.QtCore import *
  4.  
    from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
  5.  
    from PyQt5.QtGui import *
  6.  
     
  7.  
    class mythread(QThread):
  8.  
     
  9.  
    def __init__(self, parent=None):
  10.  
    super(mythread, self).__init__()
  11.  
     
  12.  
    def __del__(self):
  13.  
    self.wait()
  14.  
     
  15.  
    def run(self):
  16.  
    # do something

接着在主函数中导入自定义线程类,实例化并开启:

  1.  
    import sys
  2.  
    import cv2
  3.  
    from PyQt5 import QtCore, QtGui, QtWidgets
  4.  
    from PyQt5.QtCore import *
  5.  
    from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
  6.  
    from PyQt5.QtGui import *
  7.  
     
  8.  
    from GUI import Ui_MainWindow
  9.  
    from costom_thread import mythread # 导入自定义线程类
  10.  
     
  11.  
    class mywindow(QtWidgets.QMainWindow,Ui_MainWindow):
  12.  
     
  13.  
    def __init__(self):
  14.  
    super(mywindow, self).__init__()
  15.  
    self.setupUi(self)
  16.  
     
  17.  
    self.one_pushButton.clicked.connect(pushbutton_fuction) # 槽函数连接
  18.  
    self.sub_thread = mythread() # 实例化新线程
  19.  
     
  20.  
    def pushbutton_fuction(self):
  21.  
    self.sub_thread.start() # 开启新线程
  22.  
     
  23.  
    if __name__ == '__main__':
  24.  
    app = QtWidgets.QApplication(sys.argv)
  25.  
    window = mywindow()
  26.  
    window.show()
  27.  
    sys.exit(app.exec_())

原文链接:https://blog.csdn.net/qq_37541097/article/details/79143898

python3+pyqt5+opencv3简单使用的更多相关文章

  1. Python3使用PyQt5制作简单的画板/手写板

    0.目录 1.前言 2.简单的画板1.0 在定点和移动中的鼠标所在处画一条线 3.简单的画板2.0 在定点和移动中的鼠标所在处画一条线 并将画过的线都保留在窗体上 4.简单的画板3.0 将按住鼠标后移 ...

  2. 程序员之路:python3+PyQt5+pycharm桌面GUI开发(转)

    程序员之路:python3+PyQt5+pycharm桌面GUI开发 http://blog.sina.com.cn/s/blog_989218ad0102wz1k.html 先看效果: 图 1 没错 ...

  3. Python3+PyQt5+PyCharm 桌面GUI开发环境搭建

    Python3+PyQt5+PyCharm 桌面GUI开发环境搭建 一.安装python PyQt5所支持的python版本是不低于3.5版本 python3.5以上的版本安装:https://www ...

  4. Python3+Dlib实现简单人脸识别案例

    Python3+Dlib实现简单人脸识别案例 写在前边 很早很早之前,当我还是一个傻了吧唧的专科生的时候,我就听说过人脸识别,听说过算法,听说过人工智能,并且也出生牛犊不怕虎般的学习过TensorFl ...

  5. 【爬坑】python3+pyqt5+pyinstaller 打包成exe的各种问题

    windows系统+python3+pyqt5+pyinstaller打包,经常会出现各种打包异常情况.如果代码没有特别异常,那么综合原因,大抵都是这四个元素之间的匹配问题,引起的.作者:一心狮链接: ...

  6. Python3.x:简单时间调度Timer(间隔时间执行)

    Python3.x:简单时间调度Timer(间隔时间执行) threading模块中的Timer能够帮助实现定时任务,而且是非阻塞的: 代码: import threading import time ...

  7. pyqt5多线程-简单例子

    一.主要代码逻辑 from PyQt5 import QtWidgets, QtCore from testqt.TEST_QT_FROM import Ui_Dialog import sys fr ...

  8. 【QT】利用pyqt5实现简单界面

    Topic: 利用pyqt5编写简单界面Env:win10 + Pycharm2018 + Python 3.6.8Date: 2019/4/29 by hw_Chen2018            ...

  9. win下搭建python3+PyQt5+eric6环境

    一.安装python3 1.下载python3的安装包,默认安装即可,注意勾选 Add Python 3.6 to Path .但是这样默认安装的路径太长,不太方便找到,可选择定制安装,自己定义安装路 ...

随机推荐

  1. 51nod 1584 加权约数和 约数和函数小trick 莫比乌斯反演

    LINK:加权约数和 我曾经一度认为莫比乌斯反演都是板子题. 做过这道题我认输了 不是什么东西都是板子. 一个trick 设\(s(x)\)为x的约数和函数. 有 \(s(i\cdot j)=\sum ...

  2. 6.6 省选模拟赛 线段 二维数点问题 树套树 CDQ分治

    LINK:线段 还是太菜了 没看出这道题真正的模型 我真是一个典型的没脑子选手. 考虑如何查询答案. 每次在一个线段x的状态被更改后 可以发现有影响的是 和x相连那段极长连续1子段. 设这个子段左端点 ...

  3. 从别人的代码中学习golang系列--03

    这篇博客还是整理从https://github.com/LyricTian/gin-admin 这个项目中学习的golang相关知识. 作者在项目中使用了 github.com/casbin/casb ...

  4. python机器学习经典实例PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:caji 在如今这个处处以数据驱动的世界中,机器学习正变得越来越大众化.它已经被广泛地应用于不同领域,如搜索引擎.机器人.无人驾驶汽车等.Python机器学习经典实例首先通过实用的案例 ...

  5. 初识分布式:MIT 6.284系列(一)

    前言 本系列是源于「码农翻身」所属知识星球发起的读书活动,由大佬 @我的UDP不丢包 推荐而来,这次的读书活动有一些另类,我们抛弃了传统的书籍,开始攻略最高学府的研究生顶级课程 <6.824&g ...

  6. Python笔试——毕业旅行问题

    毕业旅行问题 小明目前在做一份毕业旅行的规划.打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次.由于经费有限,希望能够通过合理的路线安排尽可能的省一些路上的 ...

  7. Pytorch_第八篇_深度学习 (DeepLearning) 基础 [4]---欠拟合、过拟合与正则化

    深度学习 (DeepLearning) 基础 [4]---欠拟合.过拟合与正则化 Introduce 在上一篇"深度学习 (DeepLearning) 基础 [3]---梯度下降法" ...

  8. Hexo博客部署到远程仓库(Conding、Gitee、Github)

    一.本地环境搭建 1.安装Git Git可以有效.高速的处理各种项目版本管理.也就是用来管理你的hexo博客文章,上传到GitHub的工具. Git下载地址 安装好了之后使用git -version查 ...

  9. C#开发笔记之01-为什么开源框架会大量的使用protected virtual?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/957 访问. 我们在很多开源框架中会经常看到prote ...

  10. C#LeetCode刷题之#349-两个数组的交集(Intersection of Two Arrays)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4042 访问. 给定两个数组,编写一个函数来计算它们的交集. 输入 ...