我正在开发一个C++程序,该程序应该检测来自网络摄像头流的面部,而不是使用面部标记裁剪它们并交换它们.
我使用OpenCV和Viola-Jones人脸检测编程了人脸检测.工作良好.比我搜索如何从ROI分割面部.我尝试了很少的皮肤检测实现,但没有一个成功.
比我发现dlib面临的地标.我决定尝试一下.刚开始时我遇到了问题,因为我必须转换cv::Mat为cv_image,Rect转矩形等等.所以我试着用dlib做.我只是使用流cv::VideoCapture而不是我想显示使用dlib捕获的内容image_window.但这是问题,它是reeeealy慢.Down是使用代码.注释行是使用OpenCV执行相同操作的行.OpenCV比没有评论的代码更快,更平滑,更连续,低于5 FPS.那太糟了.我无法想象当我应用面部检测和面部地标时会有多慢.
难道我做错了什么?我怎样才能让它更快?或者我应该使用OpenCV进行视频捕获和显示?
cv::VideoCapture cap;
image_window output_frame;
if (!cap.open(0))
{
cout << "ERROR: Opening video device 0 FAILED." << endl;
return -1;
}
cv::Mat cap_frame;
//HWND hwnd;
do
{
cap >> cap_frame;
if (!cap_frame.empty())
{
cv_image<bgr_pixel> dlib_frame(cap_frame);
output_frame.set_image(dlib_frame);
//cv::imshow("output",dlib::toMat(dlib_frame));
}
//if (27 == char(cv::waitKey(10)))
//{
// return 0;
//}
//hwnd = FindWindowA(NULL, "output");
} while(!output_frame.is_closed())//while (hwnd != NULL);
Run Code Online (Sandbox Code Playgroud)
编辑: 切换到释放模式后显示捕获的帧变得正常.但我继续尝试使用dlib进行面部检测和形状预测,就像这里的示例http://dlib.net/face_landmark_detection_ex.cpp.html一样.这是相当迟钝的.所以我关闭了形状预测.仍然"滞后.
所以我假设面部检测正在减慢速度.所以我尝试使用OpenCV进行面部检测, …
我正在使用Dlib的正面检测器来检测图像中的面部; 但是,它无法检测小于80 x 80像素的面.
在face_detection_ex.cpp中, Dlib的示例使用输入图像上采样pyramid_up()以增加面部大小.但是,它会使算法慢得多,因为它必须搜索更大的图像.
我想知道是否有人知道这个问题的解决方案.
我已经分叉了 dlandon 的Zoneminder项目,以便使用Debian Bullseye而不是 Ubuntu 为i386构建 Docker 映像(我将其安装到 32 位迷你 PC 中)。
部分要求是安装dlib(最新的是 19.22.0)。我已经安装了所需的依赖项(python3-pip、python3-setuptools和python3-wheel,以及 GCC 和 CMake)。
安装时dlib,终端输出:
Collecting dlib
Downloading dlib-19.22.0.tar.gz (7.4 MB)
Using legacy 'setup.py install' for dlib, since package 'wheel' is not installed.
Installing collected packages: dlib
Running setup.py install for dlib: started
...
Run Code Online (Sandbox Code Playgroud)
相关部分是(即使已python3-wheel安装)
Using legacy 'setup.py install' for dlib, since package 'wheel' is not installed.
Run Code Online (Sandbox Code Playgroud)
dlib …
如何将a转换dlib::array2d<bgr_pixel>为灰色图像?
灰色的图像应该是array2d<unsigned_char>.
我从未在这个问题上看到过很好的dlib文档.
dlib 是否能够使用大规模数据集来训练目标检测器。我有超过 450K 的面部图像来训练面部检测器。是否可以使用 Dlib 或者我需要转向另一个替代方案?
我有一个在dlib中定义的colume向量.我怎样才能将它转换为std :: vector?
typedef dlib::matrix<double,0,1> column_vector;
column_vector starting_point(4);
starting_point = 1,2,3,4;
std::vector x = ??
Run Code Online (Sandbox Code Playgroud)
谢谢
我想知道是否有shape_predictor_68_face_landmarks.dat关于“如何编译”或“如何使用”等术语的非文档,更像是如何设置的?培训数据是什么(什么样的图像,多少张图像,等等)。 ..)?, 谁干的?和类似的东西。
我只是能够找到很多或多或少使用该文件的代码示例,而无需质疑:D
我正在使用标题中所述的dlib,但也可能与其他库一起使用吗?
我正在尝试使用 dlib 识别的面部标志来裁剪面部。右眉毛引起了问题 - 剪裁平展而不是沿着眉毛弧线。
我在这里做错了什么?
from imutils import face_utils
import imutils
import numpy as np
import collections
import dlib
import cv2
def face_remap(shape):
remapped_image = shape.copy()
# left eye brow
remapped_image[17] = shape[26]
remapped_image[18] = shape[25]
remapped_image[19] = shape[24]
remapped_image[20] = shape[23]
remapped_image[21] = shape[22]
# right eye brow
remapped_image[22] = shape[21]
remapped_image[23] = shape[20]
remapped_image[24] = shape[19]
remapped_image[25] = shape[18]
remapped_image[26] = shape[17]
# neatening
remapped_image[27] = shape[0]
return remapped_image
"""
MAIN CODE STARTS HERE
"""
# load …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的应用程序中实现 DLIB 19.15 库。我为 Windows Visual Studio 15 2017 Win64 生成了 dlib 项目,并使用 CMAKE 进行了发布版本。在项目中,我添加了目录和其他依赖项。
但是在编译期间我有以下错误
LNK2001 未解析的外部符号 USER_ERROR__inconsistent_build_configuration__see_dlib_faq_2
我怎么解决这个问题?
首先,我使用的是ARM7架构。我dlib使用预构建的轮文件下载了库dlib-19.7.0-cp27-cp27mu-linux_armv7l.whl,Boost.python并为 python 库构建了它们,当import dlib在 python2.7 中时,我得到了这个错误
>>> import dlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/dlib/__init__.py", line 1, in <module>
from .dlib import *
ImportError: libboost_python.so.1.65.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
然后我在我的目录中搜索libboost_python.so.1.65.1并找到了它
:~# whereis libboost_python.so.1.65.1
libboost_python.so.1.65: /usr/local/lib/libboost_python.so.1.65.1
Run Code Online (Sandbox Code Playgroud)
并发现路径(/usr/local/lib/)不是PATH变量的一部分,所以,我添加了它
:~# export PATH=$PATH:/usr/local/lib
Run Code Online (Sandbox Code Playgroud)
并确保其放置正确
:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/lib
Run Code Online (Sandbox Code Playgroud)
并再次尝试,但什么也没发生,出现了同样的错误。我也安装了libboost-all-devusingapt-get和 makeupdate之后,但也出现了同样的错误。那么,该错误的原因是什么以及如何克服它?
谢谢你的建议。