树莓派做wifi热点+opencv安装和调用CSI摄像头及遇到的问题

wifi AP

让树莓派作为wifi热点,按照https://blog.csdn.net/qq_21768483/article/details/82944874配置下来可以用,其中wifi的密码长度为4会跳出一个error,最好密码长一点。网速还挺好。里面install的几个软件是很强大的,可以去看一下。之后也的确每次开机都能自动连接wifi了。

这里说一下/etc/rc.local,适用于用户自定义开机启动项的,而之前用过的/etc/init.d/nginx也是开机启动不过是软件服务自己加入的。写法按照之前网址是su pi -c 'exec /home/pi/AutoStart.sh'

主要会在/etc/rc.local中配置开机启动项以及静态路由,最近舍友在用wireshark抓本机开的tomcat服务器的包,没有抓到,后来发现需要在命令行加入:
route add -net 本机ip(不是192的那个) netmask xx gw xx
route add -host 本机ip gw xx 

也就是添加一个回环?大概就是自己本机客户端的请求直接发去了网关而没有(echo?)到本机所以wireshark抓不到自己客户端给服务器的包,不是192说明没有用到nat?我是这么理解的。报了几个虚拟ap接口的warn,看着有点吓人不过能用。配置完后我树莓派的/etc/resolv.conf又需要重新加入dns才能树莓派上网。之后重启树莓派每次都遇到这个问题了,不知道是不是dnsmasq的锅,每次只有一个127.0.0.1在那里。

解决方法1:
sudo vi /etc/resolvconf/resolv.conf.d/tail
加入nameserver x.x.x.x
sudo /etc/init.d/resolvconf restart即可,之后每次开机都会把nameserver信息自动写入resolv.conf里了 
解决方法2:我的原因是由于/etc/network/interfaces出现了一个.swp文件,说是上次未正常关闭interfaces文件导致的,所以需要在/etc/network目录下ls -a(文件管理器中是看不到这个文件的)找到.swp然后rm -f忽略即可。然后要记得sudo /etc/init.d/networking restart就可以了。

A类:0.0.0.0---127.255.255.255(保留:0.0.0.0,127.0.0.0---127.255.255.255)
B类:128.0.0.1---191.255.255.254(保留:169.254.0.0-169.254.255.255,191.255.255.255是广播地址,不能分配)

C类:192.0.0.1---223.255.255.254
D类:224.0.0.1---239.255.255.254

E类:240.0.0.1---255.255.255.254
其中私网网段在A,B,C类中

opencv

opencv-contrib库中有很多新加入的特性,在opencv2的版本中是合在一起的,opencv3中有需要可以自己选择安装,既然要做那就装了就完事了。https://blog.csdn.net/leaves_joe/article/details/67656340
按照这篇文章配置的,我装的是那个的3.4.3版本,直接将3.4.1改成3.4.3就行。原博评论下面提到了特别多的问题,我就遇到了两个,其中一个问题还导致我重新cmake了opencv,终于跑出结果啦。结果如下:

这里说一下我配置中遇到的问题:
sudo apt-get install libgtk2.0-dev这一步,我不知道是做漏了还是没弄成功,运行程序的时候报了GTK出错的错误,其中的解释是因为我libgtk2.0这个依赖出了问题需要重新cmake一下,所以之前make了3个多小时结果白make了,要在release文件夹里
1.sudo uninstall
2.cd ..
3.rm -r release
建议安装这个依赖使用:sudo aptitude install libgtk2.0-dev
4.mkdir release
5.cd release
6.cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D
WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D
INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON
-D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON ..

注意这里开了WITH_GTK=ON
7.make
8.sudo make install
然后再等3个小时吧,时间多,跟你耗。

再接着就是opencv库中的cv2需要在python2的环境下才能运行,还需要将cv2.so复制到python2.7的dist-packages(/usr/local/lib/python2.7/dist-packages)中去。由于ubuntu中会有python2.7和python3.5,再加上我又懒得装anaconda,就在直接命令控制吧,使用sudo:


1.python -V //查看当前python版本,python2直接就能出结果了,默认的应该也是python2,我装tensorflow的时候改了。这里说下tensorflow直接就sudo pip3 install tensorflow就好了...我按照别人教程里的镜像install出了一个h5py疯狂报错的问题,后来不用别人git上的镜像直接tensorflow就ok了,醉了。


2.update-alternatives --list python查看有没有2.7和3.5,我这里没有,所以需要install上去


3.update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
4.接着就可以通过update-alternatives --config python自己选择python版本啦

这次安装至少是学了下cmake了。

顺便一提由于上述链接的代码里没有涉及到常用的<opencv2/highgui/highgui.hpp>和<opencv2/core/core.hpp>等hpp,所以会有一些后续的问题,需要用到:g++ $(pkg-config --cflags --libs opencv) ctest.cpp -o cc中提到的pkgconfig。如果正确的sudo make install会自动生成。如果遇到了/usr/bin/ld:cannot find -lxxxxx的问题(libxxxxx.so),可以考虑下是不是自己的sudo make install这步没有做,按理来说opencv会自动解决这些问题正确加载ld依赖。

也就是把lib路径写入/etc/ld.so.conf和~/.bashrc。

文件在pkgconfig中,名字是opencv.pc,这玩意听说可以自己创建自己写,不过正确安装的话是不需要的。我一开始安装出错了,所以多出很多问题。如果ld出了问题可以试试这样做,记录下方法,但opencv这里是不需要的(划重点,如果要只能说明你装错了,回去卸载重装,重新一步步做下来)

调用了CSI摄像头,所以运行了网上的一份代码:摄像头可以用raspistill -o test.jpg命令来测试是否获得截图,记得要加bcm什么的,https://blog.csdn.net/u013162035/article/details/78580486(配摄像头)

这个代码用能够访问到我的csi摄像头然后长时间获取。

猜你喜欢

转载自blog.csdn.net/Parallel2333/article/details/85224143