Я использую две библиотеки: 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++
Программы на C++. Форум разработчиков
1738180679
Anonymous
Я использую две библиотеки: 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)
Подробнее здесь: [url]https://stackoverflow.com/questions/55364297/how-to-place-3d-model-on-the-top-of-face-landmarks-like-a-face-filter-app[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия