文章目录
一、编译Comport3 SDK(C++)
二、python SDK下载链接
链接:https://pan.baidu.com/s/1LFM4JH3kvNw0mMSb7t557Q
提取码:wzd2
三、编译步骤链接
https://percipiodc.readthedocs.io/en/latest/getstarted/index.html#build-pc-environment-label
四、编译SWIG并安装
https://blog.youkuaiyun.com/qq_29159273/article/details/99966243
错误1 boost库未找到
错误二 could not find PCRE2
sudo apt-get install -y libpcre2-dev
错误三 could not find BISON
sudo apt-get install -y bison
错误链接
https://blog.youkuaiyun.com/guoguangwu/article/details/124717342
编译完成
sudo make -j8
sudo make install
设置swig环境变量
添加以下两行到~/.bashrc中
export SWIG_PATH=/usr/local/share/swig/4.1.1
export PATH= $PATH:$SWIG_PATH
将路径添加到PATH
五、编译python接口
官网文档编译链接:
https://doc.percipio.xyz/cam/last/getstarted/sdk-compile.html#linux-python
Python下载安装
Python安装python-opencv、 numpy
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
设置camport3和python版本
正常不需要 默认python
编译
sudo make -j8
sudo make install
运行
编译后,根据界面提示切换至目录 /usr/local/PYTHON 并运行生成的 python 文件即可。
错误1
错误2 numpy未安装
!在这里插入图片描述
sudo apt install -U numpy
错误3 opencv-python未安装
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
错误4
Cmake ----make-----make install 安装默认位置 /usr/local/PYTHON/
运行/usr/local/PYTHON/ 的例程。生成的库也在里面。
如果遇到jpeg解码问题
主要针对opencv4.x:
修改~/swig/py_extend.i
#old
__U8C1 = [TY_PIXEL_FORMAT_MONO , TY_PIXEL_FORMAT_BAYER8GB , TY_PIXEL_FORMAT_BAYER8BG , TY_PIXEL_FORMAT_MJPG, TY_PIXEL_FORMAT_JPEG]
__U8C2 = [TY_PIXEL_FORMAT_YVYU,TY_PIXEL_FORMAT_YUYV]
__U8C3 = [TY_PIXEL_FORMAT_RGB,TY_PIXEL_FORMAT_BGR]
__U16C1 = [TY_PIXEL_FORMAT_DEPTH16]
#new
__U8CX = [TY_PIXEL_FORMAT_MJPG, TY_PIXEL_FORMAT_JPEG]
__U8C1 = [TY_PIXEL_FORMAT_MONO , TY_PIXEL_FORMAT_BAYER8GB , TY_PIXEL_FORMAT_BAYER8BG]
__U8C2 = [TY_PIXEL_FORMAT_YVYU,TY_PIXEL_FORMAT_YUYV]
__U8C3 = [TY_PIXEL_FORMAT_RGB,TY_PIXEL_FORMAT_BGR]
__U16C1 = [TY_PIXEL_FORMAT_DEPTH16]
#old
if pformat in self.__U8C1:
sz = self.height*self.width
return uint8_t_ARRAY.ptr_as_nparray2d(self.buffer,self.height,self.width)
elif pformat in self.__U8C2:
return uint8_t_ARRAY.ptr_as_nparray3d(self.buffer,self.height,self.width,2)
elif pformat in self.__U8C3:
sz = self.height*self.width*3
return uint8_t_ARRAY.ptr_as_nparray3d(self.buffer,self.height,self.width,3)
elif pformat in self.__U16C1:
sz = self.height*self.width
return uint16_t_ARRAY.ptr_as_nparray3d(self.buffer,self.height,self.width,1)
else:
raise Exception('not supported format {}'.format(pformat))
#new
if pformat in self.__U8CX:
sz = self.size
return uint8_t_ARRAY.ptr_as_nparray1d(self.buffer,self.size)
if pformat in self.__U8C1:
sz = self.height*self.width
return uint8_t_ARRAY.ptr_as_nparray2d(self.buffer,self.height,self.width)
elif pformat in self.__U8C2:
return uint8_t_ARRAY.ptr_as_nparray3d(self.buffer,self.height,self.width,2)
elif pformat in self.__U8C3:
sz = self.height*self.width*3
return uint8_t_ARRAY.ptr_as_nparray3d(self.buffer,self.height,self.width,3)
elif pformat in self.__U16C1:
sz = self.height*self.width
return uint16_t_ARRAY.ptr_as_nparray3d(self.buffer,self.height,self.width,1)
else:
raise Exception('not supported format {}'.format(pformat))