对于pointnet配置相关bug的解决

2024-04-19 07:38

本文主要是介绍对于pointnet配置相关bug的解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pointnet参考链接

Pointnet和Pointnet++的pytorch版源码链接参考
https://github.com/yanx27/Pointnet_Pointnet2_pytorch

visualizer文件部分问题解决

1、win10系统下build.sh文件运行问题

安装git–>安装g++
安装git:https://so.csdn.net/so/search?q=%E5%AE%89%E8%A3%85git&t=&u=
安装g++: http://c.biancheng.net/view/8077.html
git运行linux脚本
可通过linux系统或者已安装的git中bash环境运行build.sh脚本
安装完毕g++之后可通过sh build.sh运行,见上图

2、win10系统下download_data.sh文件运行问题

该文件位于链接https://github.com/KuangenZhang/ldgcnn的part_seg的文件夹下
download_data bug
对于sh download_data运行问题的错误,主要原因为Issued certificate has expired,win10系统下解决方案为:通过记事本打开sh文件,wget指令后添加–no-check-certificate
若显示无–no-check-certificate参数,参考https://blog.csdn.net/topsogn/article/details/121217646?spm=1001.2014.3001.5501

def download():BASE_DIR = os.path.dirname(os.path.abspath(__file__))DATA_DIR = os.path.join(BASE_DIR, 'data')if not os.path.exists(DATA_DIR):os.mkdir(DATA_DIR)if not os.path.exists(os.path.join(DATA_DIR, 'modelnet40_ply_hdf5_2048')):www = 'https://shapenet.cs.stanford.edu/media/modelnet40_ply_hdf5_2048.zip'zipfile = os.path.basename(www)os.system('wget --no-check-certificate %s' % (www))os.system('unzip %s' % (zipfile))os.system('mv %s %s' % (zipfile[:-4], DATA_DIR))os.system('rm %s' % (zipfile))

若显示unzip不是内部或外部命令,也不是可运行的程序或批处理文件。则可通过在系统环境变量中添加windows下的zip.exe和unzip.exe的路径

3、 raise OSError(“no file with expected extension”)问题

在运行PointNet的可视化程序时,作者只提供了linux平台下的动态链接库程序源码,自己的windows平台下无法调用。发现是动态链接库的文件格式不对,遂学习如何将.so文件转换成.dll文件

3.1 安装viusal studio
3.2 新建C++动态链接库项目

创建dll动态链接库新项目

3.3 修改头文件pch.h
#ifndef PCH_H
#define PCH_H// 添加要在此处预编译的标头
#include "framework.h"#endif //PCH_H
//定义宏
#ifdef IMPORT_DLL
#else
#define IMPORT_DLL extern "C" _declspec(dllimport) //指的是允许将其给外部调用
#endif// 改为你所需要的链接库函数
IMPORT_DLL void render_ball(int h, int w, unsigned char* show, int n, int* xyzs, float* c0, float* c1, float* c2, int r);

修改头文件pch.h

3.4 重写dllmain.cpp文件
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <cstdio>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;struct PointInfo {int x, y, z;float r, g, b;
};
void render_ball(int h, int w, unsigned char* show, int n, int* xyzs, float* c0, float* c1, float* c2, int r) {r = max(r, 1);vector<int> depth(h * w, -2100000000);vector<PointInfo> pattern;for (int dx = -r; dx <= r; dx++)for (int dy = -r; dy <= r; dy++)if (dx * dx + dy * dy < r * r) {double dz = sqrt(double(r * r - dx * dx - dy * dy));PointInfo pinfo;pinfo.x = dx;pinfo.y = dy;pinfo.z = dz;pinfo.r = dz / r;pinfo.g = dz / r;pinfo.b = dz / r;pattern.push_back(pinfo);}double zmin = 0, zmax = 0;for (int i = 0; i < n; i++) {if (i == 0) {zmin = xyzs[i * 3 + 2] - r;zmax = xyzs[i * 3 + 2] + r;}else {zmin = min(zmin, double(xyzs[i * 3 + 2] - r));zmax = max(zmax, double(xyzs[i * 3 + 2] + r));}}for (int i = 0; i < n; i++) {int x = xyzs[i * 3 + 0], y = xyzs[i * 3 + 1], z = xyzs[i * 3 + 2];for (int j = 0; j<int(pattern.size()); j++) {int x2 = x + pattern[j].x;int y2 = y + pattern[j].y;int z2 = z + pattern[j].z;if (!(x2 < 0 || x2 >= h || y2 < 0 || y2 >= w) && depth[x2 * w + y2] < z2) {depth[x2 * w + y2] = z2;double intensity = min(1.0, (z2 - zmin) / (zmax - zmin) * 0.7 + 0.3);show[(x2 * w + y2) * 3 + 0] = pattern[j].b * c2[i] * intensity;show[(x2 * w + y2) * 3 + 1] = pattern[j].g * c0[i] * intensity;show[(x2 * w + y2) * 3 + 2] = pattern[j].r * c1[i] * intensity;}}}
}
// 具体内容改为你的文件内容

重写主函数
转载链接:https://blog.csdn.net/Moringstarluc/article/details/105702543

注: 若pycharm调试时出现OSError: [WinError 193] %1 不是有效的 Win32 应用程序 的问题

bug解决2
原因为visual调试时的 配置: Debug Win32,需修改为Win64,解决方案见下图,修改为x64即可
修改调试版本

这篇关于对于pointnet配置相关bug的解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/916939

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu