Я использую две библиотеки: OpenCV для функций компьютерного зрения и OpenSceneGraph для компьютерных графических функций. Потому что основной целью программного обеспечения является дополненная реальность. Основная цель программного обеспечения состоит в том, чтобы создать фильтр для лица, подобный тому, что в Snapchat, и до сих пор я сделал с достопримечательностями лица (часть компьютерного зрения) и загрузку 3D-модели внутри подачи камеры OpenCV с помощью функций OpenSceneGraph Полем Проблема в том, что я попытался разместить трехмерную модель на вершину достопримечательностей лица, но она не работала идеально, потому что координаты модели отличаются от модели достопримечательностей лица OpenCV.
Итак, есть ли способ, где я Может ли отлично поместить модель на вершину достопримечательностей лица Я разделил число на 10 или 20, потому что точки координат, которые поступают от достопримечательностей лица, огромны по сравнению с тем, которые из позиции модели. Обратите внимание, что позиция модели имеет три точки координат: x, y и z, а точки, которые поступают от достопримечательностей лица - только x и y. < /P>
main .cpp < /p>
#include
#include
#include
#include
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"
#include "OpenCVFuncs.hpp"
#include "/home/bardawil/Desktop/OSG-OpenCV-ARDemo/include/BackgroundCamera.h"
#include "/home/bardawil/Desktop/OSG-OpenCV-ARDemo/include/VirtualCamera.h"
using namespace cv;
using namespace cv::face;
using namespace std;
// Initialization: -
// ** OSG Stuff **
int screenWidth, screenHeight, textureWidth, textureHeight;
// Create viewer
osgViewer::Viewer viewer;
// Main Camera
osg::ref_ptr camera = viewer.getCamera();
// Background-Camera (OpenCV Feed)
BackgroundCamera bgCamera;
// Load glass Model as Example Scene
osg::ref_ptr glassModel = osgDB::readNodeFile("priestene test.obj");
// Model position initial value
osg::Vec3 modelPosition(0, 100, 10);
// Model scale initial value
osg::Vec3 modelScale(150, 150, 150);
// ** OpenCV Stuff **
// Video Capture initialization (from desktop camera)
cv::VideoCapture cap(0);
Mat gray;
// Load Face Detector
CascadeClassifier faceDetector("/home/bardawil/Desktop/OSG-OpenCV-ARDemo/haarcascade_frontalface_alt2.xml");
// Create an instance of Facemark
Ptr facemark = FacemarkLBF::create();
struct faceParams faceStruct;
// struct eyesLM eyes;
int main( int argc, char** argv )
{
int count = 0;
facemark->loadModel("/home/bardawil/Desktop/OSG-OpenCV-ARDemo/lbfmodel.yaml");
screenWidth = 640;
screenHeight = 480;
textureWidth = 640;
textureHeight = 480;
// OSG STUFF
viewer.setUpViewInWindow(50,50,screenWidth,screenHeight);
// Virtual Camera setup
VirtualCamera* vCamera = new VirtualCamera(camera);
// OpenCV camera
osg::Camera* backgroundCamera = bgCamera.createCamera(textureWidth, textureHeight);
osg::Group* glassesGroup = new osg::Group();
// Position of glass
osg::PositionAttitudeTransform* position = new osg::PositionAttitudeTransform();
glassesGroup->addChild(position);
position->addChild(glassModel);
// Set Position of Model
position->setPosition(modelPosition);
// Set Scale of Model
position->setScale(modelScale);
// Create new group node
osg::ref_ptr group = new osg::Group;
osg::Node* background = backgroundCamera;
osg::Node* foreground = glassesGroup;
background->getOrCreateStateSet()->setRenderBinDetails(1,"RenderBin");
foreground->getOrCreateStateSet()->setRenderBinDetails(2,"RenderBin");
group->addChild(background);
group->addChild(foreground);
background->getOrCreateStateSet()->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF);
foreground->getOrCreateStateSet()->setMode(GL_DEPTH_TEST,osg::StateAttribute::ON);
// Add the groud to the viewer
viewer.setSceneData(group.get());
if(!cap.isOpened())
{
std::cout updatePosition(0, 0, 0, 0, 0, 0);
//osg::notify(osg::WARN)
Подробнее здесь: https://stackoverflow.com/questions/553 ... filter-app
Как поместить 3D-модель на вершину достопримечательностей лица, как приложение для фильтра для лица? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Извлечение контура лица из ограничивающей рамки лица с помощью платформы iOS Vision.
Anonymous » » в форуме IOS - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-