- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个项目应该看到某人脸上的点并开始播放视频。我将屏幕分为三个区域并命名。当我运行项目相机时,突然看到第二个区域并且没有错误,因为第二个区域没有任何 Action 。但是当摄像机看到第一或第三区域时 - 项目应该开始在这些区域播放视频 - 项目突然关闭。
这是我的 logcat 错误:
08-28 11:08:09.392: E/AndroidRuntime(4635): FATAL EXCEPTION: Thread-373
08-28 11:08:09.392: E/AndroidRuntime(4635): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4078)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:714)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.view.View.requestLayout(View.java:12678)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.view.View.requestLayout(View.java:12678)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.view.View.requestLayout(View.java:12678)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.view.View.requestLayout(View.java:12678)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:268)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.view.View.requestLayout(View.java:12678)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.widget.VideoView.setVideoURI(VideoView.java:213)
08-28 11:08:09.392: E/AndroidRuntime(4635): at android.widget.VideoView.setVideoURI(VideoView.java:202)
08-28 11:08:09.392: E/AndroidRuntime(4635): at org.opencv.samples.facedetect.FdActivity.startPlaying(FdActivity.java:526)
08-28 11:08:09.392: E/AndroidRuntime(4635): at org.opencv.samples.facedetect.FdActivity.onCameraFrame(FdActivity.java:372)
08-28 11:08:09.392: E/AndroidRuntime(4635): at org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:387)
08-28 11:08:09.392: E/AndroidRuntime(4635): at org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:321)
08-28 11:08:09.392: E/AndroidRuntime(4635): at java.lang.Thread.run(Thread.java:856)
这是主要代码的必要部分。
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "called onCreate");
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.face_detect_surface_view);
.....
mMethodSeekbar = (SeekBar) findViewById(R.id.methodSeekBar);
mValue = (TextView) findViewById(R.id.method);
.....
videoView.setZOrderOnTop(true);
// Creating MediaController
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.setVideoURI(uri2);
videoView.requestFocus();
videoView.start();
currentPosition = 0;
}
@Override
public void onPause() {
.....
}
@Override
public void onResume() {
....
}
@Override
public void onDestroy() {
...
}
@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
mGray = inputFrame.gray();
if (mAbsoluteFaceSize == 0) {
int height = mGray.rows();
if (Math.round(height * mRelativeFaceSize) > 0) {
mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize);
}
}
if (mZoomWindow == null || mZoomWindow2 == null)
CreateAuxiliaryMats();
MatOfRect faces = new MatOfRect();
if (mJavaDetector != null)
mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2,
2, // TODO: objdetect.CV_HAAR_SCALE_IMAGE
new Size(mAbsoluteFaceSize, mAbsoluteFaceSize),
new Size());
Rect[] facesArray = faces.toArray();
for (int i = 0; i < facesArray.length; i++) {
//Core.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(),
// FACE_RECT_COLOR, 3);
xCenter = (facesArray[i].x + facesArray[i].width + facesArray[i].x) / 2;
yCenter = (facesArray[i].y + facesArray[i].y + facesArray[i].height) / 2;
Point center = new Point(xCenter, yCenter);
//Core.circle(mRgba, center, 10, new Scalar(255, 0, 0, 255), 3);
Log.i("Point Location", Double.toString(xCenter));
if(xCenter>50 && xCenter<250 ){
Log.i("Point Location","Area 1");
startPlaying(false);
}
else if (xCenter>250 && xCenter<450) {
Log.i("Point Location","Area 2");
/*
videoView.stopPlayback();
videoView.setVideoURI(uri2);
videoView.requestFocus();
videoView.start();
*/
}
else if (xCenter>450 && xCenter <650){
Log.i("Point Location","Area 3");
startPlaying(false);
}
/*Core.putText(mRgba, "[" + center.x + "," + center.y + "]",
new Point(center.x + 20, center.y + 20),
Core.FONT_HERSHEY_SIMPLEX, 0.7, new Scalar(255, 255, 255,
255));
//KOORDINATLARI YAZAN FONKSIYON// */
Rect r = facesArray[i];
// compute the eye area
Rect eyearea = new Rect(r.x + r.width / 8,
(int) (r.y + (r.height / 4.5)), r.width - 2 * r.width / 8,
(int) (r.height / 3.0));
// split it
Rect eyearea_right = new Rect(r.x + r.width / 16,
(int) (r.y + (r.height / 4.5)),
(r.width - 2 * r.width / 16) / 2, (int) (r.height / 3.0));
Rect eyearea_left = new Rect(r.x + r.width / 16
+ (r.width - 2 * r.width / 16) / 2,
(int) (r.y + (r.height / 4.5)),
(r.width - 2 * r.width / 16) / 2, (int) (r.height / 3.0));
// draw the area - mGray is working grayscale mat, if you want to
// see area in rgb preview, change mGray to mRgba
Core.rectangle(mRgba, eyearea_left.tl(), eyearea_left.br(),
new Scalar(255, 0, 0, 255), 2);
Core.rectangle(mRgba, eyearea_right.tl(), eyearea_right.br(),
new Scalar(255, 0, 0, 255), 2);
if (learn_frames < 5) {
teplateR = get_template(mJavaDetectorEye, eyearea_right, 24);
teplateL = get_template(mJavaDetectorEye, eyearea_left, 24);
learn_frames++;
} else {
// Learning finished, use the new templates for template
// matching
// match_eye(eyearea_right, teplateR, method);
//match_eye(eyearea_left, teplateL, method);
}
}
return mRgba;
}
.....
}
我觉得有问题:
private void startPlaying(boolean startFromCurrent) { //IHTIYAC 1
videoView.stopPlayback();
videoView.setVideoURI(uri1);
//videoView.requestFocus();
...
}
});
}
最佳答案
如果您认为 startPlaying()
是错误的来源,请在 runOnUiThread()
中执行与 Android View 相关的所有方法:
private void startPlaying(boolean startFromCurrent) {
runOnUiThread(new Runnable(){
@Override
public void run(){
videoView.stopPlayback();
videoView.setVideoURI(uri1);
}
});
...
关于java - 错误 : Only the original thread that created a view hierarchy can touch its views camera,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25543864/
我对这个话题有点怀疑。 情况: 我进行了一项研究,其中指出 Sencha Touch 2 (further Sencha) 和 DHTMLX Touch (further DHTMLX) 是可供选择的
我的移动应用程序目前在 Sencha Touch 1.1.1 下运行。现在,我想将其升级到 Sencha Touch 2.0。有人可以帮我做这件事吗?升级时我应该注意哪些一般步骤? 另外,是否有帮助该
在他们的文档中找不到指定了所有日期时间格式的位置? 我想要一个日期看起来像这样 13 Jan 2013 我发现了这个模式: date("F j, Y") 但这给了我很长的月份名称。 (不知道为什么他们
我需要一个简单的嵌套 ListView 示例。沿着这条线的东西...... (来源:roosteronacid.com) 当您单击一个项目时,您将转换(滑动)到包含另一个列表的下一个 View /卡片
scons 使用 MD5 哈希值而不是文件修改时间来确定是否需要构建依赖项。 我希望这是默认行为。但是,除了编辑文件以使其不同之外,是否有任何方法可以强制它假设特定文件已过期(相当于“触摸”)? 编辑
我有一个 sencha touch 显示在列表中的联系人列表。然后,当您单击列表中的姓名时,它应该向右滑动并说您好 {联系人姓名}!但是当它现在滑过时,它只是说你好!第 29 行是项目点击的 Acti
我是一名 Ext 老手,但我需要创建一些相当简单的移动应用程序,自然而然我正在研究 sencha touch。 Ting 是 - 大多数示例无法在 Firefox/Opera 中运行。 我很高兴使用
只是想知道在 Sencha Touch 中是否有处理该问题的方法。一个商店,应用不同的过滤器后,商店可以用于不同的地方。 例如: 我有一家商店: Ext.regModel('abc', { f
如何覆盖浏览器后退按钮的功能?我在页面中有导航 View ,我想同步浏览器后退按钮和导航 View 的后退按钮。我可以覆盖导航按钮的功能,但我不知道如何为浏览器返回做同样的事情。 我们将不胜感激。 最
如何使用两个 Action 创建 UIButton。 我知道通过使用 UILongPressGestureRecognizer 我们可以执行 Longpress。 但我的要求是,当我长按 UIButt
如何在 Ext.panel 中动态添加新项目?这是我正在使用的代码; app.views.ViewItem = Ext.extend(Ext.Panel, { id: '0', doc
我有一个全屏按钮(我将其放置在 IB 中),其中包含一个图像,当用户单击它时,我希望将其滑出屏幕。我知道连接正常,因为单击按钮时我可以记录一些内容。但是我之前用来移动 UIViews 和 UIImag
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
大家好,我目前正在为 iPhone 开发一款节奏游戏,只是想知道是否有人对用于 react 时间的最佳作品有任何想法。 我已经完成了所有编码,并将其范围缩小到大约 2 种方式: 1:使用绕过 UICo
我正在尝试使用XCode编码计算器,但是后来我看到带有逗号的数字只是在逗号后被切掉了。 我正在用文本代码获取带有此代码的数字。 -(IBAction)Additionbutton:(id)sender
Sencha Touch 中是否有控件可以显示如下图所示的密码字段? 最佳答案 不,没有本地组件可以做到这一点。但是您可以自己构建它:它是一个包含 4 个输入字段和十几个按钮的表单。有关详细信息,请参
出于某种原因,我的表单面板没有显示。谁能帮忙?如果这很明显,我是新手,很抱歉!它是用 Sencha Architect 构建的,但我不明白为什么没有字段显示在表单中?... Ext.define('M
我创建了一个基于表格的模板,因此我可以获得类似网格的感觉。我的问题是,当我单击表格行时,如何弹出警报(带有 td 信息)。 这是我的 getUserList.js 文件 Ext.regMode
他们无论如何要更改圆形矩形按钮的白色部分而不制作自定义按钮吗? 最佳答案 嗯,差不多。您必须将其设置为自定义但不继承 UIButton。那么你应该能够做类似的事情 myButton.layer.cor
有人可以给我指点 Sencha Touch 和 Javascript 的初学者教程吗?我对 HTML 和 Javascript & CSS 知之甚少。我需要学习高级 Javascript 和指南针/主
我是一名优秀的程序员,十分优秀!