通过 OpenCV 将 MTCNN 与网络摄像头结合使用

2023-12-24

我希望能够使用网络摄像头并利用 MTCNN 作为主要面部检测器。正如可以使用 Haar Cascades 一样,我想使用 MTCNN 在我的网络摄像头上查找人脸

该视频是关于打破 MTCNN 的,但仍然提供了我的目标的见解:https://www.youtube.com/watch?v=OY70OIS8bxs https://www.youtube.com/watch?v=OY70OIS8bxs

到目前为止,这是我的代码。过去是这样,情节会显示出来,我必须“X”它,但现在它不起作用

from mtcnn.mtcnn import MTCNN 
import cv2 as cv
from matplotlib import pyplot
from matplotlib.patches import Rectangle

cap =  cv.VideoCapture(0)

detector = MTCNN()

#face = detector.detect_faces(img)


while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    if (ret):
        # Our operations on the frame come here
        gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)

        ax = pyplot.gca()
        face = detector.detect_faces(frame)
        face = pyplot.imread(frame)
        x, y, width, height = face[0]['box']
        rect = Rectangle((x, y), width, height, fill=False, color='red')
        ax.add_patch(rect)
        pyplot.imshow(frame)
        cv.imshow('frame',gray)
        pyplot.show()
     # Display the resulting frame
        #cv.imshow('frame',gray)
    if cv.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv.destroyAllWindows()

我希望有人能帮助我...


我现在遇到了类似的问题。我有一个可以裁剪视频脸部的程序。我使用 OpenCV 读入帧,然后对它们进行裁剪。之后我想将裁剪后的脸部视频保存到新视频中。

首先我也使用 Haar Cascade。一切工作正常,但有一些总体性能不足 --> 它经常无法识别面孔。

现在我想使用 MTCNN。我更改了代码以便与 MTCNN 配合使用。一切工作正常-->它读取帧,对其执行裁剪等。但是,一旦我去保存视频,问题就会发生。代码运行良好,但是打开保存的视频后,出现视频已损坏的错误。

我坐了 2 个小时,很困惑,因为代码是相同的。所有输出都是相同的(即格式、大小等)

我现在不得不得出结论,MTCNN 和 Opencv 之间存在一些错误。尽管这对我来说完全不明白为什么会发生这种情况。

更新: 如果您运行以下代码:它运行良好并且视频再次保存。但是,如果您取消注释顶部的 2 行 --> 它会损坏文件,并且您将不再获得工作视频。不幸的是,我还无法弄清楚其中的原因。

import cv2

# from mtcnn.mtcnn import MTCNN
# cropper = MTCNN()

read_video = cv2.VideoCapture('video.mp4')
fps = read_video.get(cv2.CAP_PROP_FPS)

fourcc = cv2.VideoWriter_fourcc(*'mp4v')
write_video = cv2.VideoWriter('new3.mp4', fourcc, fps, (256,256))
images = []

success,image = read_video.read()
count = 0
while success:
    print(count)
    images.append(image)
    success, image = read_video.read()
    count += 1

for i in images:
    write_video.write(cv2.resize(i, (256, 256), interpolation=cv2.INTER_AREA))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 OpenCV 将 MTCNN 与网络摄像头结合使用 的相关文章

随机推荐

  • UIViewController:extendLayoutInincludesOpaqueBars 和滚动视图偏移

    我的应用程序的视图层次结构非常简单 UINavigationController包含一个UITableViewController 导航控制器的导航栏是不透明的 这会导致导航转换期间表视图出现一些奇怪的插入行为 如下所示 为了解决这个问题
  • Db2 从 jdbc 合并动态值

    我想使用 db2 merge 语句将其作为来自 jdbc 的语句提交 我处于以下场景 我正在使用专有的持久层 并且正在处理一个实体 我不知道它是否已经持久存在 并且我想使用合并语句来插入或更新数据库上的行 是否可以 假设我正在处理桌子peo
  • PHP 本周的工作日,为什么 date() 和 strtotime 取下周?

    我使用以下代码来获取工作日的 Y m d 格式 monday date Y m d strtotime Monday tuesday date Y m d strtotime Tuesday wednesday date Y m d str
  • 如何编写基于类的 Django 验证器?

    我正在使用 Django 1 8 The 有关编写验证器的文档 https docs djangoproject com en 1 8 ref validators writing validators有一个基于函数的验证器的示例 它还说明
  • Java 杀死或终止线程

    大家好 基本上 当用户按下 终止 按钮时 我需要终止或停止正在运行的线程 该线程循环遍历数组列表并在 JTextArea 上显示每个事件 要求是当用户按下 终止 按钮时 我需要终止正在运行的线程 同时向数组列表添加一个新的 终止 事件 并让
  • 如何扩展 Pydantic 对象并更改某些字段的类型?

    有两个类似的 pydantic 对象 唯一的区别是有些字段是可选的 如何只定义一个对象中的字段并扩展到另一个对象中 class ProjectCreateObject BaseModel project id str project nam
  • 如何让 JOOQ 在 IN 子句中使用数组

    我想要JOOQ生成 in 并将列表绑定为数组参数 Postgres 我的代码看起来像 where Tables TABLE FIELD in idsList 我怎样才能做到这一点 为什么默认情况下不这样做 因为它比字符串的生成 和由 PG
  • 如何向 PHP 添加证书颁发机构,以便 file() 函数信任其签名的证书?

    我需要打开由私人公司的证书颁发机构签名的远程资源 目前 PHP 不会打开资源 因为它不信任证书签名者 我知道您可以使用流上下文对象执行证书 但我正在寻找一种方法来为 PHP 提供新证书颁发机构的公钥并拥有file 和类似的方法信任由该机构签
  • 如何从完整字符串 iOS swift 中找到字符串的多个 NSRange

    let fullString Hello world there are string 07 continents and string 195 countries let range NSMakeRange 24 2 NSMakeRang
  • Android NDK 的 Netlink 实现

    我有一个类似任务的要求 如中提到的这个链接 https kristrev github io 2013 07 26 passive monitoring of sockets on linux Android 中套接字的被动监控 一种方法是
  • Android Kotlin - 如何扩展 ConstraintLayout?

    我希望我的 ConstaintLayout 带有额外的附加属性 但我在扩展它时遇到了麻烦 更准确地说 我无法将正确的构造函数放入 class myCL ConstraintLayout 为了确保您的行为不会出现任何怪癖 您应该像这样实现它
  • “size”和“length”方法有什么区别

    当我跑的时候size and length在字符串上 它们返回相同的值 akash size gt 5 akash length gt 5 这两种方法有什么区别 Summary 在 Ruby 中 方法可以被重写 因此有些类中的多个方法会产生
  • 十六进制或二进制数中的数字之前是否允许使用数字分隔符?

    C 14 将数字分隔符的概念引入到文字中 大致如下 3 141 592 653 589 现在这是一个great具有可读代码的功能 但我想知道它是否允许引号beforea 的数字部分0x 0b 类型文字 在我看来 这 unsigned int
  • ffmpeg 使用什么格式/协议进行“原始”输出?

    给定一个命令行ffmpeg f lavfi i sine frequency 1000 duration 5 ar 8000 c a FOO pipe 1 ffmpeg 可能会抱怨它 无法找到合适的输出格式 对于某些编解码器 ffmpeg
  • .NET 创建新的调度程序

    我正在尝试使用调度程序创建第二个线程 以便我可以让主调度程序 用于 UI 完全无压力 并且让 UI 不断响应 现在 我可以为每个子线程 或 C 中的 void 创建多个线程 但我是否有可能创建一个新线程并获取它的调度程序 然后调用它 这就是
  • Linq 按两个字段进行分组并求平均值

    我有以下 C 模型 public class RawData public int questionnaireId get set public int coachNodeId get set public int questionnair
  • 如何让jquery每个数字

    这是我的代码 each 3 function n alert n 我想提醒三遍 但没有成功 我能做些什么 each必须对一个对象进行操作 尝试创建一个长度为 3 的数组 例如 each new Array 3 function n aler
  • 不允许部分应用“变异”方法

    struct MyStruct var count 0 mutating func add amount Int count amount var myStruct MyStruct 1 2 3 4 forEach myStruct add
  • GAE:进程终止,因为后端在后端作业中关闭时间太长

    我的后端作业基于 cron 作业 每 4 小时一次 运行 但它在没有处理数据的情况下终止 服务器日志显示如下 500 15377121ms 0kb instance 0 AppEngine Google http code google c
  • 通过 OpenCV 将 MTCNN 与网络摄像头结合使用

    我希望能够使用网络摄像头并利用 MTCNN 作为主要面部检测器 正如可以使用 Haar Cascades 一样 我想使用 MTCNN 在我的网络摄像头上查找人脸 该视频是关于打破 MTCNN 的 但仍然提供了我的目标的见解 https ww