pycharm配置PyQt5、Open3D、Python-pcl

只是当兴趣爱好,看客也不用考虑构思这样的事情是不是合理。此外也是想通过这样的一个东西把自己接触过的2D,3D,深度学习能融合到一起。时间久了,觉得原理性的,理论方面的算法内容才是最重要的,理解了,用什么实现不是什么问题。

这部分主要介绍pycharm配置PyQt5做一个简单界面、配置Open3D及Python-pcl显示点云

我安装的是Anaconda3-5.2.0-Windows-x86_64.exe,对应python版本是3.6.5版本,此版本的Anaconda下的site-packages文件夹里自带pyqt,这里我是先去除已有库,如下命令:

pip uninstall pyqt5 qtpy

完毕后如下两条命令即可:

pip install pyqt5 qtpy
pip install pyqt5-tools

安装完毕后,site-packages可见如下文件夹

然后打开File里的Settings菜单栏

出现如下界面

首先选中QtDesigner,点击类似笔的图标,进行配置,

我的配置如下,路径结合自己的路径来设定

同理,再对PyUIC进行配置

然后切换到pcharm的主界面,如下方式选择,可以打开QtDesigner来进行界面设计

界面设计如下:

设计完毕后,保存该ui.文件,然后选中保存的该ui文件,点击如下红色划线的PyUIC菜单项

完毕后会生成一个test_pyqt5.py文件

在test_pyqt5.ui及test_pyqt5.py的路径下,新建一个python文件,这里我取名为test_gui.py,文件里代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from test_pyqt5 import Ui_MainWindow

from PyQt5 import QtWidgets
import sys

class Mywindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(Mywindow, self).__init__()
        self.setupUi(self)

    def slot1(self):  # 界面上按钮回调函数
        self.textEdit.setText("hi,helloworld~")

if __name__=='__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Mywindow()
    window.show()
    sys.exit(app.exec_())

运行test_gui.py文件,出现如下界面,并点击run按钮,截图如下:

到这里简单的pyqt5界面搭建就结束。

提醒:有的Anaconda3版本安装完毕后,在python.exe的同目录下缺没有python3.dll,

此时运行上面层程序会报错:

from PyQt5 import QtCore

ImportError: DLL load failed:找不到指定的模块

此时是由于丢失python3.dll所致,所以需要自己下一个,这里演示下如何做,首先看下自己Anaconda3里的python是什么版本,

这里我的版本是Python3.6.5

然后到这网址下:Python Releases for Windows | Python.org

下载对应版本的python安装程序

管理员身份安装下载的文件

安装完毕后,把此版python安装目录下的python3.dll拷贝到anaconda3的安装目下(python.exe所在的文件夹),py文件可以正常运行

如下命令可以直接安装open3D

pip3 install open3d-python

因为下载速度慢需要换源的见此博客Anaconda3 更换镜像(换清华镜像源)_guomei_eros的博客-CSDN博客_anaconda3更换镜像

如下是我的.condarc得配置内容

安装完毕后新建了一个python文件来测试它,代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import numpy as np
import open3d as o3d

pcd = o3d.io.read_point_cloud("D:\\rabbit.pcd")
print(pcd)
print(o3d.np.asarray(pcd.points))
o3d.visualization.draw_geometries([pcd])

points = np.random.rand(10000, 3)
point_cloud = o3d.PointCloud()
point_cloud.points = o3d.Vector3dVector(points)
o3d.draw_geometries([point_cloud])

运行后结果如下:

接下来配置另一个3D库,python-pcl

第一种方式直接下载对应的python_pcl-0.3-cp36-cp36m-win_amd64.whl文件,然后pip安装

链接:https://pan.baidu.com/s/1gF3GrLWoKeoP8iMcfUby2Q 
提取码:ktmw 

pip install python_pcl-0.3-cp36-cp36m-win_amd64.whl

安装完毕后,看需要是否升级numpy的python库

安装完毕后,创建测试代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pcl.pcl_visualization
fileName="D:\\rabbit.pcd";#注意更换自己的pcd点云文件
cloud=pcl.load_XYZRGB(fileName)
visual = pcl.pcl_visualization.CloudViewing()

print(cloud[1])
visual.ShowColorCloud(cloud, b'cloud')
v = True
while v:
    v = not (visual.WasStopped())

运行结果如下:

第二种方式是要自己动手多做点事情:

1. github上下载python-pcl ,网络慢的下不来的用我这个:

链接:https://pan.baidu.com/s/1VVr6lFYIpZK9b_eeyk6kow 
提取码:7lju 

下载完毕后,解压缩,如下是我存放的位置:


2. 继续下载gtk+-bundle_3.10.4-20131202_win64.zip

链接:https://pan.baidu.com/s/1jt9yBrhuFU-jphvuWqQN8A 
提取码:pb0w 
 

3.解压缩gtk+-bundle_3.10.4-20131202_win64.zip, 把里面的目录下bin文件夹的内容

拷贝至前面python-pcl的解压缩文件夹下的pkg-config文件夹下

4. 这里需要pip的版本较新,且cython的版本为0.25.2,如下两条命令可以实现:

python -m pip install --upgrade pip
pip3 install cython==0.25.2

5. cmd进入python-pcl的安装路径:D:\python-pcl-master\python-pcl

该路径下能够看到setup.py文件

6. cmd环境下执行如下两条命令

python setup.py build_ext -i
python setup.py install

7. 完毕后执行第一种方式下的代码,能正常显示点云。

测试所用pcd见如下链接

链接:https://pan.baidu.com/s/1Eu9XgCH7_8w5xIFGIc-irQ 
提取码:n17e 
 

如下命令安装python版opencv

pip install opencv-python

测试代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cv2
from PIL import Image
import numpy as np
import PyQt5
from PyQt5 import QtCore

src = cv2.imread("D:\\cat003.jpg",0)
print(src.shape)
print("src data type: ", src.dtype)
src1 = src.reshape(1,src.shape[0]*src.shape[1])
print(src1.shape)
print(type(src))
cv2.imshow("src",src)
cv2.waitKey(0)
###############################################################
image1 = Image.fromarray(src)
image1.show()
print(type(image1))
#print(image1.shape)  这句话会报错
################################################################
array = np.array(image1)
print(array.shape)
print(type(array))
################################################################
array1 = array[np.newaxis,...,np.newaxis]
print(array1.shape)
###############################################################
x_train = np.random.random((100,100,100,3))
print(x_train.shape)

结果显示如下:

后面第二部分会demo如何在PyQt界面上显示2D图及3D点云

猜你喜欢

转载自blog.csdn.net/jiugeshao/article/details/109555772