質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1413閲覧

openFrameworksを用いた開発でのCoreGraphicsが機能しない

smart

総合スコア19

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/10/18 09:32

編集2018/10/18 10:05

C++に限らず、プログラミング知識に乏しい初心者です。
現在、顔認証を行い、顔(視線)を上下させた際に、それに伴って閲覧ページのスクロールを行うシステムの開発を行っております。

発生している問題・エラーメッセージ

顔認証はopenFrameworksを活用しているofxFacetrackerを使用しています。
スクロール機能はxcodeに搭載されているCoreGraphicsを使用しています。
これらを踏まえて、以下に記載されているようなソースコードを書いてデバックしたのですが、エラーは出ず、顔認証をきちんと行えている状態でした。しかし、顔を上下してもページはスクロールされませんでした。きちんと変数等は値を受け取っているものの、ページスクロールの部分(CGEventRef, CGEventCreateScrollWheelEvent,CGEventPostなどの関数)のみ、動作していない状況です。

該当のソースコード

使用言語:C++

#include "ofApp.h" #include "ApplicationServices/ApplicationServices.h" using namespace ofxCv; void ofApp::setup() { ofSetVerticalSync(true); ofSetDrawBitmapMode(OF_BITMAPMODE_MODEL_BILLBOARD); cam.setup(640, 480); tracker.setup(); } void ofApp::update() { cam.update(); if(cam.isFrameNew()) { tracker.update(toCv(cam)); position = tracker.getPosition(); scale = tracker.getScale(); orientation = tracker.getOrientation(); rotationMatrix = tracker.getRotationMatrix(); } } void ofApp::draw() { ofSetColor(255); cam.draw(0, 0); ofDrawBitmapString(ofToString((int) ofGetFrameRate()), 10, 20); if(tracker.getFound()) { ofSetLineWidth(1); tracker.draw(); ofSetupScreenOrtho(640, 480, -1000, 1000); ofTranslate(640 / 2, 480 / 2); ofPushMatrix(); ofScale(5,5,5); tracker.getObjectMesh().drawWireframe(); ofPopMatrix(); applyMatrix(rotationMatrix); ofScale(5,5,5); tracker.getObjectMesh().drawWireframe(); } } void ofApp::keyPressed(int key) { if(key == 'r') { tracker.reset(); } /*ページスクロール*/ if(key == 's'){ templeL = tracker.getImagePoint(2); templeR = tracker.getImagePoint(14); nose = tracker.getImagePoint(29); faceDirValue = (templeR.y + templeL.y)/2 - nose.y; Move = (faceDirValue - FaceDirectionBaseY)/5; if(!FaceDirectionBaseY) { FaceDirectionBaseY = faceDirValue; }else if(FaceDirectionBaseY) { if(faceDirValue < FaceDirectionBaseY-20 || faceDirValue > FaceDirectionBaseY + 30) { CGEventRef eve = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitLine, 1, Move); CGEventPost(kCGHIDEventTap, eve); CFRelease(eve); NeckMoveY = true; }else { NeckMoveY = false; } } } }

試したこと

・CoreGraphicsを用いる際に使用するCoreService.framworkをFrameworkに追加。
・エラーはなく、正常にデバックできる。
・プログラムを実行するとカメラが起動し、顔認証(検知)が実行され、正常に動作する。
・アルゴリズム自体に問題はなく、ソースコード内のページスクロールの部分のみ動作していない。
・ページスクロール部分にある変数(faceDirValue,Moveなど)はきちんと値を取得している。

補足情報

開発環境
PC:MacBook Air (13-inch, Early 2015) macOS High Sierra 10.13.6
IDE:Xcode 10.0
開発言語:C++
ライブラリ:CoreGraphics
openFrameworks 使用アドオン(ofxGui, ofxCv, ofxFaceTracker, ofxOpenCV)

ofxFaceTracker
https://github.com/kylemcdonald/ofxFaceTracker

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

単純に操作させたいウィンドウにカーソルを合わせるだけでした。
これにより無事coregraqhicsを扱うことができました。

投稿2018/10/31 09:44

smart

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問