注释 - 使用imrect强制执行方形

时间:2015-05-07 20:53:50

标签: matlab computer-vision

我有一个Matlab程序,要求用户在场景中围绕人类绘制一个矩形(我后来使用 @Override public boolean onCreateOptionsMenu(Menu menu) { // Only show items in the action bar relevant to this screen // if the drawer is not showing. Otherwise, let the drawer // decide what to show in the action bar. getMenuInflater().inflate(R.menu.menu_main, menu); //Associate searchable configuration with the SearchView SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.search)); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); //Returns null //searchView.getLayoutParams(); return true; } 提取该区域)。我需要强制用户绘制正方形。我正在使用<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/search" android:title="Search" android:icon="@android:drawable/ic_menu_search" app:showAsAction="collapseActionView|ifRoom" app:actionViewClass="android.support.v7.widget.SearchView"/> </menu> 函数,但我无法强制使用正方形,也无法找到有关如何执行此操作的文档。

2 个答案:

答案 0 :(得分:4)

似乎imrect可以将position-constraining function作为输入参数。该功能规定如下:

  

每当移动对象时,因为       鼠标拖动时,使用调用约束函数       语法:

constrained_position = fcn(new_position)

位置是[xleft ybottom width height]形式的矢量。

所以试试这个:

axis equal %// same sccale on both axes
axis manual %// freeze axes size 
h = imrect('PositionConstraintFcn', @(x) [x(1) x(2) min(x(3),x(4))*[1 1]])

答案 1 :(得分:4)

最简单的方法是在创建矩形期间将setFixedAspectRatioMode方法设置为true,最初绘制一个正方形。 (检查Gaussian Integers)。

示例:

%// Make sure it's initially a square!!
hRect = imrect(gca, [10 10 100 100]);

setFixedAspectRatioMode(hRect,1)

然后无论你如何改变位置,它都将保持正方形。但请注意,与Luis相反。解决方案,用户无法指定方块的初始位置。