精华内容
下载资源
问答
  • 首先,在图像和视频分析方面,我们应该...诸如定向跟踪之类的某些事情将需要一连串的图像(帧),但是诸如面部检测或物体识别之类的事情可以用几乎与图像和视频上完全相同的代码来完成。接下来,许多图像和视频分析...

    首先,在图像和视频分析方面,我们应该了解一些基本的假设和范例。用今天几乎所有摄像机的记录方式来说,记录实际上都是帧,每秒显示30-60次,一次又一次显示。但是,它们的核心是静态帧,就像图像一样。因此,图像识别和视频分析大部分使用相同的方法。诸如定向跟踪之类的某些事情将需要一连串的图像(帧),但是诸如面部检测或物体识别之类的事情可以用几乎与图像和视频上完全相同的代码来完成。

    接下来,许多图像和视频分析归结为尽可能简化源。这几乎总是从转换为灰度开始的,但是也可以是滤色器,渐变或它们的组合。从这里,我们可以对源进行各种分析和转换。通常,最后要完成的工作是先进行转换,然后进行分析,然后将要应用的所有叠加层都应用回原始源,这就是为什么您经常可以看到物体或面部识别的“成品”的原因在全彩图像或视频上显示。但是,很少像这样以原始形式实际处理数据。我们可以在基本层面上做的一些例子。所有这些都是通过基本的网络摄像头完成的,没什么特别的:

    在边缘检测的情况下,黑色对应于像素值(0,0,0),而白线对应于(255,255,255)。视频中的每个图片和帧都按这种方式分解为像素,就像边缘检测一样,我们可以推断出边缘是基于白色像素与黑色之间的比较。然后,如果要查看带有标记边缘的原始图像,请注意所有白色像素的坐标位置,然后在原始源Feed图像或视频上标记这些位置。

    在本教程结束时,您将能够完成上述所有操作,并且能够训练您的机器以识别所需的任何对象。就像我最初说的那样,第一步通常是转换为灰度。在此之前,我们需要加载图像。因此,让我们开始吧!在整个教程中,我强烈建议您使用自己的数据进行处理。如果您有网络摄像头,请一定要使用它,否则请找到您认为很有趣的图像。如果您遇到麻烦,请参考以下图片:

    import cv2

    import numpy as np

    from matplotlib import pyplot as plt

    img = cv2.imread('watch.jpg',cv2.IMREAD_GRAYSCALE)

    cv2.imshow('image',img)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

    首先,我们要导入一些东西,我都安装了这三个模块。接下来,我们将img定义为cv2.read(图像文件,parms)。默认值parms为IMREAD_COLOR,它是没有任何Alpha通道的颜色。如果您不熟悉,则alpha是不透明的程度(与透明度相反)。如果需要保留Alpha通道,也可以使用IMREAD_UNCHANGED。很多时候,您将阅读彩色版本,然后将其转换为灰色。如果您没有网络摄像头,这将是您在本教程中使用的主要方法,即加载图像。

    除了使用IMREAD_COLOR ...等,您还可以使用简单的数字。您应该熟悉这两种选择,从而了解该人在做什么。对于第二个参数,可以使用-1、0或1。颜色是1,灰度是0,而不变是-1。因此,对于灰度,可以做到img = cv2.imread('watch.jpg', 0)

    加载后,我们使用cv2.imshow(title,image)来显示图像。从这里开始,我们使用cv2.waitKey(0)等待直到按下任何键。完成后,我们使用cv2.destroyAllWindows()关闭所有内容。

    如前所述,您还可以使用Matplotlib显示图像,下面是一些有关如何执行此操作的代码:

    加载后,我们使用cv2.imshow(title,image)来显示图像。从这里开始,我们使用cv2.waitKey(0)等待直到按下任何键。完成后,我们使用cv2.destroyAllWindows()关闭所有内容。

    如前所述,您还可以使用Matplotlib显示图像,下面是一些有关如何执行此操作的代码:

    import cv2

    import numpy as np

    from matplotlib import pyplot as plt

    img = cv2.imread('watch.jpg',cv2.IMREAD_GRAYSCALE)

    plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')

    plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis

    plt.plot([200,300,400],[100,200,300],'c', linewidth=5)

    plt.show()

    请注意,您可以像在任何其他Matplotlib图中一样或可以使用像素位置作为坐标来绘制线。但是,如果您希望在图像上绘画,则不需要Matplotlib。OpenCV为此提供了很好的方法。完成修改后,可以保存,如下所示:

    cv2.imwrite('watchgray.png',img)

    展开全文
  • 在此带有Python的OpenCV教程中,我们将介绍如何在图像和视频上绘制各种形状。想要以某种方式标记检测到的对象是相当普遍的,因此我们人类可以很容易地看到我们的程序是否按照我们希望的那样工作。一个示例是之前显示...

    在此带有Python的OpenCV教程中,我们将介绍如何在图像和视频上绘制各种形状。想要以某种方式标记检测到的对象是相当普遍的,因此我们人类可以很容易地看到我们的程序是否按照我们希望的那样工作。一个示例是之前显示的图像之一:

    对于此临时示例,我将使用以下图像:

    鼓励您使用自己的图像。像往常一样,我们的起始代码可以是:

    import numpy as np

    import cv2

    img = cv2.imread('watch.jpg',cv2.IMREAD_COLOR)

    接下来,我们可以开始绘制,例如:

    cv2.line(img,(0,0),(150,150),(255,255,255),15)

    cv2.imshow('image',img)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

    cv2.line()采用以下参数:图像地址,开始坐标,结束坐标,颜色(bgr),线宽。

    结果在这里:

    好了,很酷,让我们对更多形状感到荒谬。接下来,是一个矩形:

    cv2.rectangle(img,(15,25),(200,150),(0,0,255),15).rectangle(img,(15,25),(200,150),(0,0,255),15)

    这里的参数是图像,左上角坐标,右下角坐标,颜色和线宽。

    圆呢?

    这里的参数是图像/帧,圆心,半径,颜色,然后是厚度。注意,厚度为-1。这意味着该对象实际上将被填充,因此我们将获得一个实心圆。

    cv2.circle(img,(100,63), 55, (0,255,0), -1).circle(img,(100,63), 55, (0,255,0), -1)

    线条,矩形和圆形都很酷,但是如果我们想要一个五边形,八边形或八边形呢?没问题!

    pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)= np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)

    # OpenCV的文档有这个代码,其中阵列重塑到1×2.我没有

    #find this necessary, but you may :

    #pts = pts.reshape((-1,1,2))

    cv2.polylines(img, [pts], True, (0,255,255), 3)

    #首先,我们将pts(点的缩写)命名为numpy坐标数组。然后,我们使用cv2.polylines画线。参数如下:我们应该“连接”最终点和起始点,颜色以及厚度,是绘制对象所在的坐标。

    您可能要做的最后一件事是在图像上书写。可以这样完成:

    font = cv2.FONT_HERSHEY_SIMPLEX

    cv2.putText(img,'OpenCV Tuts!',(0,130), font, 1, (200,255,155), 2, cv2.LINE_AA)

    到目前为止,完整的代码如下所示:

    import numpy as np

    import cv2

    img = cv2.imread('watch.jpg',cv2.IMREAD_COLOR)

    cv2.line(img,(0,0),(200,300),(255,255,255),50)

    cv2.rectangle(img,(500,250),(1000,500),(0,0,255),15)

    cv2.circle(img,(447,63), 63, (0,255,0), -1)

    pts = np.array([[100,50],[200,300],[700,200],[500,100]], np.int32)

    pts = pts.reshape((-1,1,2))

    cv2.polylines(img, [pts], True, (0,255,255), 3)

    font = cv2.FONT_HERSHEY_SIMPLEX

    cv2.putText(img,'OpenCV Tuts!',(10,500), font, 6, (200,255,155), 13, cv2.LINE_AA)

    cv2.imshow('image',img)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

    展开全文
  • camera = cv2.VideoCapture(0) time.sleep(0.25) # otherwise, we are reading from a video file else: camera = cv2.VideoCapture(args["video"]) cascade = cv2.CascadeClassifier("/usr/local/share/OpenCV/...

    # import the necessary packages

    import argparse

    import datetime

    import imutils

    import time

    import cv2

    # construct the argument parser and parse the arguments

    ap = argparse.ArgumentParser()

    ap.add_argument("-v", "--video", help="path to the video file")

    ap.add_argument("-a", "--min-area", type=int, default=500, help="minimum area size")

    args = vars(ap.parse_args())

    # if the video argument is None, then we are reading from webcam

    if args.get("video", None) is None:

    camera = cv2.VideoCapture(0)

    time.sleep(0.25)

    # otherwise, we are reading from a video file

    else:

    camera = cv2.VideoCapture(args["video"])

    cascade = cv2.CascadeClassifier("/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml")

    # loop over the frames of the video

    while True:

    (grabbed, frame) = camera.read()

    if not grabbed:

    break

    frame = imutils.resize(frame, width=200)

    rects = cascade.detectMultiScale(frame)

    for (x, y, w, h) in rects:

    cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

    cv2.putText(frame, datetime.datetime.now().strftime("%A %d %B %Y %I:%M:%S%p"),

    (10, frame.shape[0] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 0, 255), 1)

    # show the frame and record if the user presses a key

    cv2.imshow("Security Feed", frame)

    key = cv2.waitKey(1) & 0xFF

    # cleanup the camera and close any open windows

    camera.release()

    cv2.destroyAllWindows()

    展开全文
  • sudo apt-get update sudo apt-get upgrade ...sudo apt-getinstall python-opencv (软件所在目录:/var/cache/apt/archives) sudo apt-getinstall python-pip sudo apt-getinstall python-dev sudo p...
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install python-opencv            (软件所在目录:/var/cache/apt/archives
     
    sudo apt-get install python-pip
    sudo apt-get install python-dev
    sudo pip install picamera
     
    以上是安装环境(目前opencv 只支持python 2.7;更高版本运行会报“No module named 'cv2'” 错误)
     

    转载于:https://www.cnblogs.com/wuxuan/p/7470017.html

    展开全文
  • face_cascade = cv2.CascadeClassifier( '/home/pi/Downloads/opencv/data/haarcascades/haarcascade_frontalface_default.xml' ) ### Helper Functions #####################################################...
  • cascade = cv2.CascadeClassifier("/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml") # loop over the frames of the video while True: (grabbed, frame) = camera.read() if not ...
  • 在此带有Python的OpenCV教程中,我们将介绍如何在图像和视频上绘制各种形状。想要以某种方式标记检测到的对象是相当普遍的,因此我们人类可以很容易地看到我们的程序是否按照我们希望的那样工作。一个示例是之前显示...
  • 树莓派OpenCV实现人脸识别人脸识别篇)

    千次阅读 热门讨论 2021-02-23 00:54:34
    树莓派OpenCV实现人脸识别人脸识别篇)一、OpenCV安装二、打开摄像头三、摄像头检测四、人脸识别 一、OpenCV安装 树莓派OpenCV实现人脸识别OpenCV安装篇) 二、打开摄像头 终端输入sudo raspi-config 选择 ...
  • 通过将人脸收集,进行训练,将要分析的面部的捕获部分作为参数,并将返回其可能的所有者,指示其ID以及识别器对此匹配的信任程度实现人脸识别。 二、实现步骤 一、人脸收集 首先,创建用于开发项目的目录,例如...
  • 树莓派2树莓派摄像头 云台+舵机(非必须) 安装OpenCV-3.3.0(教程以及安装问题后续发布) sudo apt-get update sudo apt-get upgrade sudo apt-get install python-opencv123 安装PiCamera 我使用树莓派官方...
  • 详情请参考https://blog.csdn.net/qq_32768679/article/details/96432354。本资源集合了采集、训练、识别,利用python、opencv实现的人脸识别功能,树莓派端实现的代码,包括识别成功后开启门(io口模拟)。
  • 树莓派人脸识别,首先是采集图像,利用 Pi Camera ,采集一段视频流,然后截帧,保存到一个文件夹中作为训练数据,然后运用强大的opencv,训练模型,主要是运用haar小波变换等,最后是在线识别,用Pi Camera通过对...
  • 单独框出每一张人脸 x, y, w, h = faceRect cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2) cv2.putText(frame, "count:"+count, (10, 40), font, 0.8, (0, 255, 255), 2)#添加一个...
  • 基于树莓派人脸识别门禁系统(python+OpenCV+PyQt)

    千次阅读 多人点赞 2019-08-20 16:29:15
    硬件:树莓派3B+ 镜像系统:2019-04-08-raspbian-stretch-full.img 软件:python2.7+OpenCV3.4.0+PyQt5 HDMI显示屏:10.1寸、分辨率1280*800 注:本来搭建OpenCV环境和PyQt5的时候是按照python3.5来的,开发到...
  • 单独框出每一张人脸 x, y, w, h = faceRect cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2) cv2.putText(frame, "count:"+count, (10, 40), font, 0.8, (0, 255, 255), 2)#添加一个...
  • 主要看了以下两位博客的文章完成的,也遇到了不少的坑,在这里一一填补说明。...树莓派OpenCV实现人脸识别OpenCV安装篇)一、材料准备:二、系统烧录三、安装OpenCV依赖项四、下载OpenCV-4.3.0五、为OpenCV配置P
  • 树莓派制作人脸识别详细教程

    千次阅读 2019-07-04 15:42:18
    1. 配置并更新树莓派系统 sudo raspi-config // 进入后打开摄像头、SSH sudo apt-get update sudo apt-get upgrade sudo rpi-update 2. 安装OpenCV的相关工具 sudo apt-get install build-essential cmake ...
  • 基于树莓派OpenCV人脸识别

    千次阅读 2020-07-13 00:44:06
    树莓派(Raspbian Buster)下的opencvopencv_contrib的源码安装 下载相关程序 在树莓派终端中 git clone https://gitee.com/jeebus/Facial_Recognition.git cd Facial_Recognition 摄像头检测 python3 simpleCamTes
  • 因此我开源了一个树莓派人脸识别+活体检测的库,在2800+人脸数据的情况下能达到20FPS左右的人脸检测,人脸识别,以及活体检测。 二、介绍 本项目用的是ncnn来作为推理框架部署模型,主要用到的模型有 人脸检测: ...
  • 一、背景最近一直在学习人脸识别,想做一个能够落地的项目,但是网上的教程要么就只是opencv人脸检测,要么就是帧数太低,用起来很不方便。因此我开源了一个树莓派人脸识别+活体检测的库,在2800+人脸数据的情况下能...
  • 配件准备:树莓派摄像头(USB或CSI)step1:在终端上运行如下代码,出现下面的界面sudo raspi-config然后按步骤选择Advanced Options:再选择Expand Filesystem :Raspberry PI “Expand Filesystem”菜单允许我们利用...
  • 前言树莓派配置OpenCV,配置起来有点繁琐且耗时,调用百度智能云的人脸识别API是一个很好的解决方案接上摄像头的树莓派.png一、申请AppID、API Key和Secret Key1.1 创建应用在百度智能云人脸识别项目中创建应用,...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 286
精华内容 114
关键字:

树莓派opencv人脸识别