小编Isa*_*aac的帖子

为iPhone 5 solvepnp创建opencv相机矩阵

我正在使用opencv为iPhone开发应用程序.我必须使用方法solvePnPRansac:

http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html

对于这种方法,我需要提供一个相机矩阵:
__ __
| fx 0 cx |
| 0 fy cy |
| _0 0 1 _ |

其中cx和cy代表图像的中心像素位置,fx和fy代表焦距,但这就是文档中所说的.我不确定这些焦距应该提供什么.iPhone 5的焦距为4.1毫米,但我不认为这个值可以按原样使用.

我检查了另一个网站:

http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html

这显示了opencv如何创建相机矩阵.这里说明焦距是以像素为单位测量的.

我检查了另一个网站:

http://www.velocityreviews.com/forums/t500283-focal-length-in-pixels.html

(大约一半)它表示可以使用以下公式将焦距从毫米单位转换为像素:fx = fy = focalMM*pixelDensity/25.4;

另一个链接我发现fx = focalMM*width /(sensorSizeMM); fy = focalMM*length /(sensorSizeMM);

我不确定这些方程式以及如何正确地创建这个矩阵.

任何有关如何创建精确相机矩阵(特别是iPhone 5)的帮助,建议或链接将不胜感激,

艾萨克

ps我认为(fx/fy)或(fy/fx)可能等于相机的纵横比,但这可能完全错误.

更新:

像素坐标到3D线(opencv)

使用这个链接,我可以弄清楚他们是如何想要fx和fy格式化的,因为他们使用它来相对于它们与中心的距离来缩放角度.因此,fx和fy很可能是像素/(单位长度),但我仍然不确定这个单位长度需要什么,只要x和y相互缩放,它是否可以是任意的?

iphone opencv computer-vision augmented-reality camera-calibration

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

使用opencv进行android角点跟踪

我试图跟踪一张纸的角落的位置,因为我相对于Android相机移动它(您可以假设纸张将是与背景完全不同的颜色).我想找到android屏幕上每个角落的x,y坐标.我还希望能够改变纸张的角度,这样它就不一定会呈现出完美的矩形.

我正在使用opencv 2.4.1 for Android,但我找不到cvgoodfeaturetotrackcvfindcornersubpix在包中.现在我正在考虑使用CvCanny算法来找到边缘,然后使用边缘cvfindcontours找到线条的主要交点以找到角落.

任何建议或源代码将不胜感激.

android opencv tracking

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

无法将自动视图添加到自定义视图组

我一直在尝试将视图从xml扩展到相应的视图对象,然后将这些视图对象添加到编程的视图组中.但是,每当我调用myviewgroup.addView(子视图)时,子视图似乎都会丢失xml代码应该给出的所有按钮和内容.但是,子视图确实具有的一个方面是我编写的背景颜色,以确保为子视图提供正确的尺寸.子视图具有正确的尺寸,但其组件均不可见

     LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    viewchanger= new ViewChanger(this); //my viewgroup
    View mainmenu= inflater.inflate(R.layout.main, null); //the xml code
    mainmenu.setBackgroundColor(Color.rgb(0, 0, 255));
    viewchanger.addView(mainmenu);
    setContentView(viewchanger); 
Run Code Online (Sandbox Code Playgroud)

上面的代码只是将我的屏幕背景设置为蓝色,但没有任何按钮显示.另外,当我setContentView(mainmenu)时,一切都完全从那个xml代码和背景颜色中显示出来.这个视图组的要点是,我可以在多个视图中的任何一个视图之间切换,而不管它们作为子视图的顺序.

这是viewchanger的代码.我希望它有7个子视图,当我调用方法setView(int v)时,我希望所有其他视图都消失,我只希望那个视图可见.

public class ViewChanger extends ViewGroup{

/**Represent which view to show, only one can show at a time*/
public static final int MainMenu=0, ChooseMap=1, MapOptions=2, 
        SetLocation=3, view=4, EditMap=5, CreateMap=6;
private int current; //the current view
private View[] views= new View[7];

public ViewChanger(Context context) {
    super(context);
            //load 7 views into view array here
            //LayoutInflater inflater =    (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); …
Run Code Online (Sandbox Code Playgroud)

xml android view inflate viewgroup

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