小编Jam*_*meo的帖子

将相机预览旋转到Portrait Android OpenCV相机

我正在尝试使用OpenCV 2.4.3.2创建一个相机应用程序并进行一些opencv处理.我希望它能够有多个UI方向,而不仅仅是Landscape.

问题是,当我将方向更改为纵向时,图像会侧向出现.

我知道我可以在进行图像处理之前旋转输入图像(因此只将方向保留为横向),这很好并且有效,但是没有解决我的其他UI将处于错误方向的问题.

我也尝试使用这段代码来旋转相机90deg,但它似乎没有用.

mCamera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)

它要么没有效果,要么有时只会导致预览变黑

有人用OpenCV成功完成了这项工作吗?我的类扩展自JavaCameraView. 侧面预览的肖像图像

编辑

我做了一些改进,就是我在OpenCV中旋转了图像,因为它在CameraBridgeViewBase.java类中显示.

在交付和绘制框架方法中:

if (canvas != null) {
            canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
            //canvas.drawBitmap(mCacheBitmap, (canvas.getWidth() - mCacheBitmap.getWidth()) / 2, (canvas.getHeight() - mCacheBitmap.getHeight()) / 2, null);
            //Change to support portrait view
            Matrix matrix = new Matrix();
            matrix.preTranslate((canvas.getWidth() - mCacheBitmap.getWidth()) / 2,(canvas.getHeight() - mCacheBitmap.getHeight()) / 2);

            if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
                matrix.postRotate(90f,(canvas.getWidth()) / 2,(canvas.getHeight()) / 2);
            canvas.drawBitmap(mCacheBitmap, matrix, new Paint());
Run Code Online (Sandbox Code Playgroud)

...基本上,这只是像输入图像一样

输入图像旋转90

这样更好,但我显然希望这是全屏.

android opencv android-camera

36
推荐指数
6
解决办法
3万
查看次数

Golang Reflection:从struct字段获取标签

是否可以反映结构的字段,并获得对其标记值的引用?

例如:

type User struct {
    name    string `json:name-field`
    age     int
}
...
user := &User{"John Doe The Fourth", 20}
getStructTag(user.name)
...
func getStructTag(i interface{}) string{
   //get tag from field

}
Run Code Online (Sandbox Code Playgroud)

从我所看到的,通常的方法是将范围超过typ.NumField(),然后调用field.Tag.Get("tagname").但是,在我的用例中,不必传递整个结构就好了.任何想法?

reflection struct go

24
推荐指数
2
解决办法
2万
查看次数

同时将一个动画应用于多个视图

所以我想同时旋转一些视图,所有视图都使用相同的旋转规格.问题在于,由于某种原因,旋转对第二个元素的作用不同.显然,这与动画对象实际上在这两行代码之间改变状态有关.显然我可以创建一个单独的Animation对象并应用它,但我觉得有一种更简单的方法(我有大约15个视图)

仅正确旋转第一个视图:

Animation rotateAnim = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait);
target.startAnimation(rotateAnim);
lightBtn.startAnimation(rotateAnim);
Run Code Online (Sandbox Code Playgroud)

正确旋转

Animation rotateAnim = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait);
Animation rotateAnim2 = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait);
target.startAnimation(rotateAnim);
lightBtn.startAnimation(rotateAnim2);
Run Code Online (Sandbox Code Playgroud)

XML:

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="-90"
    android:toDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="500" android:fillAfter="true">
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

android rotation image-rotation

20
推荐指数
2
解决办法
2万
查看次数

从MacPorts Mavericks安装时找不到GDB命令

我正在尝试安装GDB以与Mavericks上的LiteIDE一起使用.

经过一些研究,我发现GDB不再带有Xcode,而且你必须自己安装它.如果没有实际从源代码安装GDB和自我代码签名(id而不是这样做),我想使用MacPorts来完成这项工作.

我做了port install gdb,据我所知,跑步和成功.安装完成后,我关闭了终端,然后输入了gdb,我得到了-bash: gdb: command not found

有没有人有这个解决方案,使用MacPorts ???

bash gdb macports osx-mavericks

19
推荐指数
1
解决办法
1万
查看次数

相机setFocusAreas()无法运行Android 4.0

我正在创建一个使用水龙头来聚焦功能的相机应用程序,就像许多标准相机应用程序一样.我首先得到触摸事件的(x,y)坐标,然后将此值传递给UI.然后,我尝试设置焦点区域,如下所示:

Rect newRect = new Rect(left,top,right, bottom);
Camera.Parameters params = mCamera.mCameraInstance.getParameters();
Camera.Area focusArea = new Camera.Area(newRect, 1000);
List<Camera.Area> focusAreas = new ArrayList<Camera.Area>();
focusAreas.add(focusArea);
params.setFocusAreas(focusAreas);
Run Code Online (Sandbox Code Playgroud)

但是,它似乎没有任何效果.所以,我将一些值硬编码到矩形中(这样,我可以排除触摸事件中的坏坐标). 根据文档,它正在寻找空间中的坐标(-1000,-1000)(左上)到(1000,1000)(右下).

所以我用这个替换了上面的矩形:

//should target a 100x100 square in the center of the screen
Rect newRect = new Rect(-50,-50,50, 50);
Run Code Online (Sandbox Code Playgroud)

而且,似乎没有效果.我知道我的相机支持设置对焦区域,因为首先,相机应用程序成功使用它,并且params.getMaxNumFocusAreas()返回1.

如果有人在过去成功使用过这个,请告诉我!

编辑:

我发现这个类似的问题似乎也表明这个API根本无法在Android 4.0设备上运行(我正在测试4.1.1,Galaxy S3).然而,这些设备上的相机应用程序仍然具有点对点功能.我错过了什么?

camera android android-camera

12
推荐指数
1
解决办法
5555
查看次数

锁定在一个方向时获取电话方向

这可能很容易与另一个问题重复,我只是在努力弄清楚要搜索什么.

我的相机应用程序被锁定在横向模式(在清单中),如下所示:

android:screenOrientation="landscape"
Run Code Online (Sandbox Code Playgroud)

不过,我想还是有的旋转UI元素,当设备旋转为纵向(尽管机器人仍然会想起它的目的在景观,但多数民众赞成).

所以我试过这个来检查方向

int rotation = this.getWindowManager().getDefaultDisplay()
            .getRotation();
    int degrees = 0;
    switch (rotation) {
        case Surface.ROTATION_0:
            Log.d("Rotation", "0");
            break;
        case Surface.ROTATION_90:
            Log.d("Rotation", "90");
            break;
        case Surface.ROTATION_180:
            Log.d("Rotation", "180");
            break;
        case Surface.ROTATION_270:
            Log.d("Rotation", "270");
            break;
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,无论我如何转动手机,它总会返回90.是否有更强大的方式来获得方向,无论Android"认为"的方向是什么?

android android-camera

10
推荐指数
2
解决办法
4457
查看次数

向非程序员解释<div>标签是什么

所以我的兄弟是假期的家,他正在努力学习HTML和Javascript.我已经取得了一些成功,向他解释了许多与此相关的概念.大多数标签都非常自我解释,但我一直在努力描述div标签.

说实话,我从来没有真正得到一个很好的描述,只是通过我知道何时使用它的经验.

一个好的答案不需要包括"块元素"的定义或任何其他技术术语,尽管您可以假设一些HTML标签的一些基本知识

html markup

9
推荐指数
1
解决办法
2万
查看次数

Golang AES ECB加密

尝试在Go中模拟基本上是AES ECB模式加密的算法.

这是我到目前为止所拥有的

func Decrypt(data []byte) []byte {
    cipher, err := aes.NewCipher([]byte(KEY))
    if err == nil {
        cipher.Decrypt(data, PKCS5Pad(data))
        return data
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

我还有一个PKCS5Padding算法,经过测试和工作,它首先填充数据.我无法找到有关如何在Go AES包中切换加密模式的任何信息(它绝对不在文档中).

我有这个代码用另一种语言,这就是我知道这个算法不能正常工作的方式.

编辑:这是我在问题页面上解释的方法

func AESECB(ciphertext []byte) []byte {
    cipher, _ := aes.NewCipher([]byte(KEY))
    fmt.Println("AESing the data")
    bs := 16
    if len(ciphertext)%bs != 0     {
        panic("Need a multiple of the blocksize")
    }

    plaintext := make([]byte, len(ciphertext))
    for len(plaintext) > 0 {
        cipher.Decrypt(plaintext, ciphertext)
        plaintext = plaintext[bs:]
        ciphertext = ciphertext[bs:]
    }
    return plaintext
}
Run Code Online (Sandbox Code Playgroud)

这实际上并没有返回任何数据,也许我在将其从编写脚本转换为decripting时搞砸了

encryption aes go ecb

9
推荐指数
2
解决办法
7786
查看次数

TwoPassFilter GPUImage实际上做了什么?

我正在尝试从Android的GPUImage(ios)重新创建GPUImageTwoPassFilter .我正在完成这里为GPUImage的Android端口所做的工作.该端口实际上适用于许多过滤器.我已经移植了很多着色器,基本上都是排队的,取得了巨大的成功.

问题是要移植一些过滤器,你必须从GPUImage扩展GPUImageTwoPassFilter,而android版本的作者尚未实现.我想写一下它,但不幸的是iOS版本没有文档,所以我不确定TwoPass过滤器应该做什么.

有没有人有任何关于这个的提示?我对openGL知之甚少,但对Android和iOS非常了解.我肯定在这里寻找一个非常的psudocode描述

android opengl-es ios gpuimage

7
推荐指数
1
解决办法
1663
查看次数

Node.JS Consolidate和Swig

我正在尝试使用节点(表达v3.1.0)设置Consolidate,以使用Swig.我一直在收到错误

错误:无法在Module.require的Function.Module._load(module.js:280:25)的Function.Module._resolveFilename(module.js:338:15)中找到模块'swig'(module.js:362:17) )at function(export.js:378:17)at Function.exports.swig.render(/home/jamie/node_modules/consolidate/lib/consolidate.js:237:50)/ home/jamie/node_modules /巩固/ lib/consolidate.js:144:25 athome/jamie/node_modules/consolidate/lib/consolidate.js:97:5 at fs.readFile(fs.js:176:14)at Object.oncomplete(fs.js: 297:15)

在顶部,我这样设置

var express = require('express');
var cons = require('consolidate');

// assign the swig engine to .html files
console.log(cons.swig);
app.engine('html', cons.swig);

// set .html as the default extension 
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
Run Code Online (Sandbox Code Playgroud)

然后我这样提出我的要求:

app.get('/', function(req, res){
    res.render('home', {
        title: "home"
    });
});
Run Code Online (Sandbox Code Playgroud)

我在根目录/视图中有一个模板home.html

我的根目录是/ home/jamie/hello-world.我在这做错了什么?

编辑 顺便说一句,console.log(cons.swig)确实返回了一些内容.

{ [Function] render: [Function] }
Run Code Online (Sandbox Code Playgroud)

所以它绝对存在

node.js express swig-template

7
推荐指数
1
解决办法
6646
查看次数