请问树莓派 usb摄像头3B+,什么时候可以像树莓派 usb摄像头3B一样安装第三方系统?

树莓派3b 64位linux系统
8g sd卡,下载镜像SLES-12-SP2-ARM-X11-raspberrypi3_aarch64.aarch64--GM.raw.xz,
链接为https://www.suse.com/eval/download?event_id=DGSLE12SP2&event_name=Eval:+SLES+Raspberry+Pi&icid=GSDGNEval23017&icname=Eval:+SLES+Raspberry+Pi+Nurture&build=ccUe-rz974A~&login_required=1
将下载的镜像放在linux系统里,插上sd卡,使用ls /dev查看sd卡的磁盘名,然后执行
xz -cd SLES-12-SP2-ARM-X11-raspberrypi3_aarch64.aarch64--GM.raw.xz | dd of=/dev/sdb bs=4096
经过一段时间的等待,就烧写好系统了。
利用cfdisk查看下磁盘分配
插上串口,用xshell配置打开串口。开机,如下打印
按t后,进入grub2,回车后加载kernel,initrd等
然后卡在下图,等下次再解决。
拖了这么长时间,补上个结尾,实际上这个问题是接上屏幕就可以了,系统启动后会进入suse界面
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!树莓派3b安装系统noobs
1、去官方网站下载一个系统
2、下载SD卡格式化工具,”SDFormatter”, 安装软件,对SD卡进行格式化
3、将1中下载的系统解压复制到SD里面, 树莓派上电运行,等一会跳出安装界面
4、先在屏幕正下方将进行键盘选择,选择 us(美国标准),再勾选列表栏的系统,点击安装。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Open Source Hardware Maker
树莓派3B+ 人脸识别(OpenCV)
树莓派3B+ 人脸识别(OpenCV)
相信大家都看了前面的OpenCV安装和人脸检测教程,有了基础后,现在我们正式进入重头戏——人脸识别 的教程。
注意:该教程面向python2.7+OpenCV2.4.9(官方源)
其它版本需进行一些小的修改,文中会具体注明。
1.生成人脸识别数据
./data 数据根目录
./data/generate 自动生成的人脸数据
./data/datamap.csv 人脸数据对应数据
./data/Mengcheng 人物一文件夹
./data/Kaixin 人物二文件夹
./data/Mengying 人物三文件夹
(这里三个人物可自行修改,文件夹为人物名,里面存放图片)
// python脚本,请保存为genrate.py
import cv2
import sys
face_cascade=cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml')
def makedir(path):
path=path.strip().rstrip('/')
if os.path.exists(path) is False:
os.makedirs( path );
def generate(root_argv,dirname):
subject_dir_path = os.path.join(root_argv, dirname)
print 'seek:'+subject_dir_path
for filename in os.listdir(subject_dir_path):
if filename == ".directory":
imgPath = os.path.join(subject_dir_path, filename)
print 'read:'+imgPath
img = cv2.imread(imgPath)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
outdir=os.path.join(root_argv,'generate',dirname)
makedir(outdir)
faces=face_cascade.detectMultiScale(gray,1.3,5)
for x,y,w,h in faces:
f=cv2.resize(gray[y:y+h,x:x+w],(200,200))
outPath=os.path.join(root_argv,'generate',dirname,'%s.pgm' % str(count))
print 'write:'+ outPath
cv2.imwrite(outPath, f)
if __name__ == '__main__':
if len(sys.argv)==1:
print ("USAGE: generate.py &人脸图片存放路径&")
root_argv=sys.argv[1]
for dirname in os.listdir(root_argv):
file_path = os.path.join(root_argv, dirname)
if os.path.isdir(file_path):
if dirname == 'generate':
generate(root_argv,dirname)
在控制台执行python generate.py ./data即可自动生成人脸识别数据
生成后,请自行打开./data/generate/下生成人脸数据是否正常,如果不正常的,请清理掉,防止后续有干扰。如图:
2.生成人脸数据对应表
人脸数据生成了,还得写一个映射表,让机器知道人脸数据对应那个人物。
// python脚本,请保存为create_csv.py
import sys
import os.path
if __name__ == '__main__':
if len(sys.argv) != 2:
print "usage: create_csv.py &生成的人脸数据路径&"
sys.exit(0)
BASE_PATH=sys.argv[1]
SEPARATOR=";"
for dirpath, dirnames, filenames in os.walk(BASE_PATH):
for subdirname in dirnames:
subject_path = os.path.join(dirpath, subdirname)
for filename in os.listdir(subject_path):
image_filename = subject_path + "/"+ filename
abs_path = "%s/%s" % (subject_path, filename)
print("%s%s%d"%(abs_path,SEPARATOR, label))
label = label + 1
然后执行python create_csv.py ./data/generate/ & ./data/datamap.csv
打开生成的datamap.csv文件,查看对应关系(如图所示):
这样,人脸数据就准备好了。
3.人脸识别
// python脚本,请保存为facerec.py
import multiprocessing as mp
import cv2
import sys
import time
import numpy as np
resX = 640
resY = 480
face_cascade = cv2.CascadeClassifier('/usr/share/opencv/lbpcascades/lbpcascade_frontalface.xml')
model = cv2.createFisherFaceRecognizer()
t_start = time.time()
def normalize(X, low, high, dtype=None):
"""Normalizes a given array in X to a value between low and high."""
X = np.asarray(X)
minX, maxX = np.min(X), np.max(X)
X = X - float(minX)
X = X / float((maxX - minX))
X = X * (high-low)
X = X + low
if dtype is None:
return np.asarray(X)
return np.asarray(X, dtype=dtype)
def load_images(path, sz=None):
X,y = [], []
for dirname, dirnames, filenames in os.walk(path):
for subdirname in dirnames:
subject_path = os.path.join(dirname, subdirname)
for filename in os.listdir(subject_path):
filepath = os.path.join(subject_path, filename)
if os.path.isdir(filepath):
img = cv2.imread(os.path.join(subject_path, filename), cv2.IMREAD_GRAYSCALE)
if (img is None):
print ("image " + filepath + " is none")
print (filepath)
if (sz is not None):
img = cv2.resize(img, (200, 200))
X.append(np.asarray(img, dtype=np.uint8))
y.append(c)
print ("Unexpected error:", sys.exc_info()[0])
return [X,y]
def get_faces( img ):
gray = cv2.cvtColor( img, cv2.COLOR_BGR2GRAY )
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
return faces, img, gray
def draw_frame( faces, img, gray ):
global xdeg
global ydeg
global fps
global time_t
for ( x, y, w, h ) in faces:
cv2.rectangle( img, ( x, y ),( x + w, y + h ), ( 200, 255, 0 ), 2 )
roi = gray[x:x+w, y:y+h]
roi = cv2.resize(roi, (200, 200), interpolation=cv2.INTER_LINEAR)
params = model.predict(roi)
sign=("%s %.2f" % (names[params[0]], params[1]))
cv2.putText(img, sign, (x, y-2), cv2.FONT_HERSHEY_SIMPLEX, 0.5, ( 0, 0, 255 ), 2 )
if (params[0] == 0):
cv2.imwrite('face_rec.jpg', img)
fps = fps + 1
sfps = fps / (time.time() - t_start)
cv2.putText(img, "FPS : " + str( int( sfps ) ), ( 10, 15 ), cv2.FONT_HERSHEY_SIMPLEX, 0.5, ( 0, 0, 255 ), 2 )
cv2.imshow( "recognize-face", img )
if __name__ == '__main__':
camera = cv2.VideoCapture(0)
camera.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH,resX)
camera.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT,resY)
pool = mp.Pool( processes=4 )
names = ['Mengying', 'Kaixin', 'Mengcheng']
if len(sys.argv) & 2:
print ("USAGE: facerec.py &人脸数据存放路径& [&数据对应表&]")
sys.exit()
[X,y] = load_images(sys.argv[1])
y = np.asarray(y, dtype=np.int32)
if len(sys.argv) == 3:
out_dir = sys.argv[2]
model.train(np.asarray(X), np.asarray(y))
read, img = camera.read()
pr1 = pool.apply_async( get_faces, [ img ] )
read, img = camera.read()
pr2 = pool.apply_async( get_faces, [ img ] )
read, img = camera.read()
pr3 = pool.apply_async( get_faces, [ img ] )
read, img = camera.read()
pr4 = pool.apply_async( get_faces, [ img ] )
fcount = 1
while (True):
read, img = camera.read()
fcount == 1:
pr1 = pool.apply_async( get_faces, [ img ] )
faces, img, gray=pr2.get()
draw_frame( faces, img, gray )
elif fcount == 2:
pr2 = pool.apply_async( get_faces, [ img ] )
faces, img, gray=pr3.get()
draw_frame( faces, img, gray )
elif fcount == 3:
pr3 = pool.apply_async( get_faces, [ img ] )
faces, img, gray=pr4.get()
draw_frame( faces, img, gray )
elif fcount == 4:
pr4 = pool.apply_async( get_faces, [ img ] )
faces, img, gray=pr1.get()
draw_frame( faces, img, gray )
fcount = 0
fcount += 1
if cv2.waitKey(1000 // 12) & 0xff == ord("q"):
camera.release()
cv2.destroyAllWindows()
注意:这里对于OpenCV3版本需要修改如下内容:
cv2.createEigenFaceRecognizer()
—&cv2.face.createEigenFaceRecognizer()
cv2.rectangle()
—&img=cv2.rectangle()
然后执行python facerec.py ./data/generate ./data/datamap.csv,此时,摄像头会自动打开,在显示屏上可以看到画面,如图:
如果想测试得更理想,应选择脸型差别比较大的来测试,其次是素材高清一些,摄像头成像清晰一些。
4.扩展资料
对于OpenCV有三种人脸识别方法,它们分别基于三种不同的算法:Eigenfaces、Fisherfaces和Local Binary Pattern Histogram(LBPH)。
首先,所有的方法都有类似的过积,即都使用了分好类的训练数据集(人脸数据库,每 个人都有很多样本)来进行“训练”,对图像或视频中检测到的人脸进行分析,并从两方面来确定:是否识别到目标,目标真正被识别到的置信度的度量,这也称为置信度评分。
Eigenfaces是通过PCA来处理的。PCA是计算机视觉中提到最多的数学概。PCA的本质是识别某个训练集上(比如人脸数据库)的主成分,并计算出训练集(图像或帧中检测到的人脸)相对于数据库的发散程度,并输出一个值。该值越小,表明人脸数据库和检测到的人脸之间差别就越小;0值表示完全匹配。
Fisherfaces是从PCA衍生并发展起来的概念,它采用更复杂的逻辑。尽管计算更加密集,但比Eigenfaces更容易得到准确的效果。
LBPH粗略地(在非常高的层次上)将检测到的人脸分成小单元,并将其与模型中的对应单元进行比较,对每个区域的匹配值产生一个直方图。由于这种方法的灵活性.LBPH是唯一允许模型样本人脸和检测到的人脸在形状、大小上可以不同的人脸识别算法。个人认为这是最准确的算法,但是每个算法都有其长处和缺点。
5.扩展书籍
看较多网友对此文章有较多疑问,但我也没有较深入去研究具体原理。故无法对你们的提问作出准确的解答,在此推荐一本书给大家,相信能化解你们的疑问![本文章代码也有部分来自此书]
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!树莓派3b 树莓派3b+什么区别_树莓派吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:48,258贴子:
树莓派3b 树莓派3b+什么区别收藏
树莓派3b 树莓派3b+什么区别那个宝上还有3b+卖
没有3b+,只有3b
楼上加一 没有3b+,只有3b
欢迎加入树莓派爱好者群,企鹅,群号,,里面很多技术大牛,做过很多项目,欢迎讨论学习
你们都在哪买的呀,我在X宝上看一块版170多(中国e14版),(加上电源 一个外壳就200多)还有英国,日本的,这三国的板有什么 不同吗?
现在还真有3B+了
我买的3B+刚到货,昨天刷上系统,速度快多了
登录百度帐号第19天 树莓派3b安装kali linux~日 13:37:29
时间: 14:15:13
&&&& 阅读:2002
&&&& 评论:
&&&& 收藏:0
标签:1、~~~~烧录系统这部很简单:系统下载地址:https://images.offensive-security.com/arm-images/kali-2.1.2-rpi2.img.xz
2、树莓派默认没有完全扩充到sd卡的所有内存。需要扩展分区
& & & #df -hl查看系统分区,看到32G的内存卡只用到6.7G,大概还有23G的内存没有被识别&
如何让树莓派识别全部的内存:
#sudo fdisk /dev/mmcblk0
将看到的分区复制下来/dev/mmcblkop2的start值,125001。下面会用到
执行命令:d(删除分区2,选择2)
执行命令:p (按这个时候应该是少了一个分区了)
执行命令:n (加分区)
执行命令:p(主要分区)
在开始位置输入start的值,如下图125001,看下图
后面的值默认即可
执行命令:p
执行命令:w
成功后如下图:
然后我们重启树莓派
sudo reboot
重启后登录putty执行如下命令:
sudo resize2fs /dev/mmcblk0p2
用于修复分区
执行成功后,再次df查看
&=========================================
wget https://curl.haxx.se/download/curl-7.50.3.tar.gz
tar -xzvf curl-7.50.3.tar.gz
./configure
make install#先更新系统apt-get updateapt-get upgradeapt-get install curl
3、安装metasploit
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb & msfinstall
chmod 755 msfinstall && ./msfinstall
4、安装postgresql数据库
安装数据库的时候会自动创建系统用户postgres,数据库用户postgres,数据库postgres
apt-get install postgresql
# 安装postgresql数据库
sudo passwd postgres
# 修改postgres的密码
su - postgres
# 切换到postgres用户
# 登陆postgresql数据库,首次登陆没有密码
\password postgres
# 修改数据库用户postgres的密码
postgresql配置看下图~~~参考:http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
http://www.jianshu.com/p/b09d0b29faa9
5、metasploit连接postgresql
启动metasploit &执行命令:db_status & 查看连接数据库状态~  
6、运行/etc/init.d/postgresql&start 启动数据库,为了开机启动,建议写进/etc/rc.local文件中:&
:/root$ psql
postgres=# create user "msf" with password ‘msf‘
postgres=# create database "msfdb" with owner="msf";
修改数据库配置文件:
~~~~在试用vi之前先安装vim & ~~~~~~sudo apt-get install vim
编辑database.ml :
还是没连上,重建一下缓存吧。
db_connect msf3::5432/msfdb # msf3是数据库用户名,s1r1u5是数据库密码, 5432是数据库端口,msfdb是数据库名~
&标签:原文地址:http://www.cnblogs.com/altruism/p/5919678.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 树莓派摄像头 的文章

 

随机推荐