只是当兴趣爱好,看客也不用考虑构思这样的事情是不是合理。此外也是想通过这样的一个东西把自己接触过的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)
结果显示如下: