小编krs*_*ynx的帖子

OpenCV findHomography问题

我正在开发OpenCV中的Panography/Panorama应用程序,我遇到了一个我真想不通的问题.有关全景照片的概念,请查看Panography Wikipedia文章:http://en.wikipedia.org/wiki/Panography

到目前为止,我可以拍摄多张图像,并将它们拼接在一起,同时制作任何我喜欢参考图像的图像; 这是我的意思.

我创建的Panography图像示例

但是,正如您所看到的 - 它有很多问题.我面临的主要问题是图像被切割(重新:最右边的图像,图像的顶部).为了突出显示这种情况的原因,我将绘制已匹配的点,并绘制转换结束位置的行:

图像匹配

左图像是参考图像,右图像是翻译后的图像(下面的原始图像) - 我绘制了绿线以突出显示图像.该图像具有以下角点:

TL: [234.759, -117.696]
TR: [852.226, -38.9487]
BR: [764.368, 374.84]
BL: [176.381, 259.953]
Run Code Online (Sandbox Code Playgroud)

所以我的主要问题是在透视图改变后的图像:

原始图像

像这样遭受损失:

剪切图像

现在足够的图像,一些代码.

我正在使用a cv::SurfFeatureDetector,cv::SurfDescriptorExtractorcv::FlannBasedMatcher获得所有这些点,我通过执行以下操作来计算匹配和更重要的好匹配:

/* calculate the matches */
for(int i = 0; i < descriptors_thisImage.rows; i++) {
    double dist = matches[i].distance;
    if(dist < min_dist) min_dist = dist;
    if(dist > max_dist) max_dist = dist;
}

/* calculate the good matches */
for(int i = 0; i < descriptors_thisImage.rows; i++) …
Run Code Online (Sandbox Code Playgroud)

c++ opencv

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

在3D游戏中处理扫射/侧面踩踏

我对游戏开发很陌生并成功建模了3D地形,并且拥有一个能够在游戏世界中自由移动的相机,但是我遇到了一个我无法弄清楚的障碍.

目前,为了向前/向后移动,我有如下方法:

void Player::moveForward(const float speed)
{
    Vector3 pos = getPosition();

    float cosYaw = cosf(degreesToRadians(m_yaw));
    float sinYaw = sinf(degreesToRadians(m_yaw));
    pos.x += float(cosYaw)*speed;
    pos.z += float(sinYaw)*speed;

    setPosition(pos);
}
Run Code Online (Sandbox Code Playgroud)

Vector3是一个简单的X,Y,Z结构,而弧度是:

inline float degreesToRadians(const float degrees) {
    const float PIOver180 = 3.14159f / 180.0f;
    return degrees * PIOver180;
}
Run Code Online (Sandbox Code Playgroud)

为了处理前进,我只需在参数中放置一个正浮点数,然后向后移动一个负浮点数.

这让我当然可以向前和向后移动 - 我也可以通过改变pos.y位置来向上移动但是我无法弄清楚如何左右移动步/拉.

如果偏航是360/0,270,180或90,则翻转xz导致我能够侧步,但是在它们之间的任何角度都会使摄像机向前/向后退步或向前/向后移动.

无论如何,这一直困扰着我,所以我试图在纸上找到解决方案 - 这有效:

inline float degreesToStrafe(const float degrees)
{
    const float PIOver90 = 3.14159f / 90.0f;
    return degrees * PIOver90;
}
Run Code Online (Sandbox Code Playgroud)

但是,在游戏中,这与交换x …

game-physics

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

5000:类'..'必须子类'flash.display.MovieClip',因为它链接到该类型的库符号

以下是完整路径的标题错误:

\\psf\Home\Dropbox\Development\Repositories\GIT\i-cc\Powerhouse\Notes\master\flash\lib\libnote\NotesCore.as:1: 5000: The class 'lib.libnote.NotesCore' must subclass 'flash.display.MovieClip' since it is linked to a library symbol of that type.
Run Code Online (Sandbox Code Playgroud)

首先,我尝试了什么,我正在使用什么:

  • 我正在使用的FlashDevelop这个项目,并FlashDevelop中已被设置为使用外接IDE(闪存CS5.5) - 它不会不管我使用Flash或FlashDevelop中编译/测试的错误仍然存​​在.

  • 我也尝试在发布设置中取消勾选"自动声明阶段实例",但没有运气.

  • 我也尝试使用extends子句的绝对路径(扩展flash.display.MovieClip)

下面是NotesCore类的存根版本;

package lib.libnote {

    /* I am importing MovieClip */
    import flash.display.MovieClip;

    ...

    /* And Extending it to the Class */
    public class NotesCore extends MovieClip {

        /* The following methods/functions are used in the class */

        public function NotesCore() {
            ... 
        }

        public function onAddedToStage(e:Event = null):void {
            ...
        }

        public function init():void …
Run Code Online (Sandbox Code Playgroud)

flash actionscript-3

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

使用JSON在Groovy/Grails中创建对象

我有一个Groovy/Grails网站,用于通过JSON向Android客户端发送数据.我创建了Android客户端和Groovy/Grails网站; 并且他们可以在JSON中输出相同的对象.

我可以通过将JSON输出映射到Java对象来成功在Android中创建相应的对象,但我想知道是否可以使用JSON输出在Groovy/Grails中创建新的域对象?有没有办法将JSON输出传递给控制器​​动作,以便创建对象?

这是我要发送的JSON示例;

{
    "class":"org.icc.callrz.BusinessCard.BusinessCard",
    "id":1,
    "businessCardDesigns":[],
    "emailAddrs":[
    {
        "class":"org.icc.callrz.BusinessCard.EmailAddress",
        "id":1,
        "address":"chris@krslynx.com",
        "businessCard":{
            "_ref":"../..",
            "class":"org.icc.callrz.BusinessCard.BusinessCard"
        },
        "index":0,
        "type":{
            "enumType":"org.icc.callrz.BusinessCard.EmailAddress$EmailAddressType",
            "name":"H"
        }
    },
    {
        "class":"org.icc.callrz.BusinessCard.EmailAddress",
        "id":2,
        "address":"cb@i-cc.cc",
        "businessCard":{
            "_ref":"../..",
            "class":"org.icc.callrz.BusinessCard.BusinessCard"
        },
        "index":1,
        "type":{
            "enumType":"org.icc.callrz.BusinessCard.EmailAddress$EmailAddressType",
            "name":"W"
        }
    }
    ]
}
Run Code Online (Sandbox Code Playgroud)

"类"与我要保存的域匹配,ID是域的ID,然后businessCardDesigns和emailAddrs中的每个项目都需要使用类似方法保存(在域中,businessCardDesigns和emailAddrs是ArrayLists ).提前谢谢了!

解:

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> createFromJson(@RequestBody String json) {
    Owner.fromJsonToOwner(json).persist();
    return new ResponseEntity<String>(HttpStatus.CREATED);
}
Run Code Online (Sandbox Code Playgroud)

grails groovy android grails-controller grails-domain-class

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

处理Grails中的并发修改(GORM),同时避免过时的对象异常

我在Grails中遇到了一个问题,我认为这可能是如何处理并发性的潜在问题; 我不确定如何最好地处理这个问题(或者如果有一个解决方案/实践已经到位,我可以适应).

背景


我的Grails应用程序用作REST API,并且具有数据的加密方法,该方法依赖于计数器变量作为密码的腌制机制.

这个计数器变量必须保持,并且不能低,因为数据将发送到发卡后不能修改计数器的SIM卡,因此正确维护此计数器非常重要.此外,如果计数器不正确,SIM将拒绝该消息.

例如,当用户呼叫时:http://example.tld/service/controller/action?id=1服务器将执行以下操作:

  • getcontroller带标识符的对象1
  • 修改counter对象的成员/行
  • save 物体

对于20,000多个请求,这很好.然而,两次,StaleObjectException由于在同一时间访问对象,我已经确定了一个.我已经确定这种情况正在发生,因为我提供的包装器API使用了10个线程,而且两个线程都同时调用了它action.

我已阅读并注意到我可以:

  • 关闭乐观锁定(这似乎是一个主意)
  • 打开动态更新(我不认为这会对我有所帮助,因为我仍在同时更新同一行)
  • lock 对象 - 但我认为由于对象在第二次被访问时被锁定,它仍会引发异常?
  • 使用executeUpdate我认为类似于打开动态更新?在我的用例中可能没用.


我想知道是否有一些我可以使用的交易机制?即一个方法来检查某个对象当前处于锁定状态,如果是这样,睡眠对于t允许交易在数据库中完成.

最终,我的最终目标是拒绝任何请求,因此如果上面的事务机制存在(我假设将是某种悲观锁)并且所述事务机制在对象被锁定时拒绝请求,我宁愿其他一些解决方案因为我想不惜一切代价避免拒绝对服务的请求,因为它使先前交付给客户变得复杂.

我想到的当前解决方案是:

try { 
    Foo.save()
catch (RespectiveException ex) {
    Thread.sleep(1000)
    if(depth < 3) {
        recursiveCallToThisMethod(depth++)
    } else {
        render(letTheUserKnowWhyItFailed)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是......非常难看

grails hibernate grails-orm

6
推荐指数
1
解决办法
1974
查看次数

OpenCV std :: vector <cv :: Point2f> to cv :: Mat

我正在OpenCV中开发一个应用程序,在Windows上,以下代码是有效的,并且编译/工作:

/* Calculate the transformation points */
std::vector<cv::Point2f> img1;
std::vector<cv::Point2f> img2;
for( int i = 0; i < good_matches.size(); i++ ) {
    img1.push_back( keypoints_imageOne[ good_matches[i].queryIdx ].pt );
    img2.push_back( keypoints_imageTwo[ good_matches[i].trainIdx ].pt );
}

/* Generate the homogonous matrix from the transformation points */
cv::Mat H = cv::findHomography(img1, img2, CV_RANSAC);
Run Code Online (Sandbox Code Playgroud)

但是,当我切换到我的MacLinux盒子时,我得到一个错误,说没有参数的函数原型(因为函数原型需要cv::Mat代替std::vector< cv::Point2f >)

所以我的问题是,我应该如何/应该如何std::vector < cv::Point2f >进行,cv::Mat或者我应该如何去做呢?

c++ opencv

5
推荐指数
1
解决办法
7357
查看次数

由于SFML框架,OS X上的链接器错误

这可能看起来像一个'noob'问题:我已经下载了适用于Mac的SFML-1.6,并且已将框架放入my/Library/Frameworks文件夹中.在尝试编译示例SFML应用程序之后,我几乎每次调用SFML都会遇到链接器错误.我不确定我错过了什么?我对OSX和Frameworks没有太多经验,所以也许我需要通过其他方法链接到库?

输出,如果它有帮助:

Undefined symbols for architecture x86_64:
  "sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)", referenced from:
      osx_init::init() in osx_init.o
  "sf::RenderWindow::RenderWindow(sf::VideoMode, std::string const&, unsigned long, sf::WindowSettings const&)", referenced from:
      osx_init::init() in osx_init.o
  "sf::RenderTarget::PreserveOpenGLStates(bool)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::Image()", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::LoadFromFile(std::string const&)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Color::Color(unsigned char, unsigned char, unsigned char, unsigned char)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Sprite::Sprite(sf::Image const&, sf::Vector2<float> const&, sf::Vector2<float> const&, float, sf::Color const&)", referenced from:
      osx_init::init() in osx_init.o
  "sf::Image::GetWidth() const", referenced from: …
Run Code Online (Sandbox Code Playgroud)

c++ linker sfml

5
推荐指数
2
解决办法
3443
查看次数

使用系统范围时的NoClassDefFoundError

我目前在使用Maven和NetBeans 7.1时遇到问题 - 我已经包含了一个我无法放入系统范围内的Maven存储库的库.它看起来像下面这样:

 <dependency>
    <groupId>org.company</groupId>
    <artifactId>FBTM</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/FBTM-1.0-SNAPSHOT.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

IDE似乎很好地接受了这个依赖,就像在Dependencies文件夹(Project视图)中显示的那样,我能够查看jar内容.我也可以从jar中导入类而没有任何问题.

但是,当我尝试运行我的项目(并且运行时有任何正在使用的类)时,我得到了一个有NoClassDefFoundError问题的类.它可以是任何类.

堆栈跟踪:

Exception in thread "main" java.lang.NoClassDefFoundError: com/company/otaupdate/sim/commands/Select at com.company.fbtranslationlibrary.mc.scripts.UserData$1.<init>(UserData.java:30) at com.company.fbtranslationlibrary.mc.scripts.UserData.<init>(UserData.java:28) at com.company.fbtranslationlibrary.mc.MS.get_profile_script(MuscadeScript.java:80) at com.company.fbtranslationlibrary.mc.MS.access$300(MS.java:16)

任何帮助或指针将不胜感激!

java maven

5
推荐指数
1
解决办法
3176
查看次数

SomeClass**ptr之间的区别; 和SomeClass*ptr;

对不起,这可能看起来像一个菜鸟问题,但这对谷歌来说真的很痛苦.我正在使用C++,虽然我可以通过Pointers和References获取,但有时我仍然非常神秘.

我有一些代码,SomeClassName **pointer我想知道为什么有两个星号而不是一个?

c c++

4
推荐指数
2
解决办法
185
查看次数

Servlets和过滤器在Grails中注册为Spring Beans而不是web.xml

在Grails '从2.x升级到3.0.6'文档中,已经注意到"新的servlet和过滤器可以分别注册为Spring bean或ServletRegistrationBean和FilterRegistrationBean",但是在这个问题上没有其他说明.

我想知道是否有人对如何正确地执行此操作有任何好的意见(即,使用包含servlet上下文来加载bean的init/BootStrap.groovy,而不是conf/spring中的bean)或者可能有一些预定义的Spring这样做的方式很明显而且我很遗憾.

注意:我正在尝试将spring-ws集成到Grails 3.0.6中.

grails spring

3
推荐指数
1
解决办法
1182
查看次数

ASN.1自动标记和可扩展性隐含属性

向我介绍了一个ASN.1文档,其中包含两个编码/解码属性。

  • 自动标签
    • 我的理解; 除非定义中存在标记符号,否则将使用编码规则自动定义标记
  • 隐含可扩展性
    • 我的理解; 类型可能包含ASN.1文档中未定义的元素。如果找到,编码器应静默忽略。另外,我的解码器还应该准备处理未指定标签的值。

Q1:以上我的理解正确吗?

Q2:有自动标签;自动定义似乎是不可行的(显然不是……),但是据我了解,someEncoder因此可以SomeType.class使用tag进行分配(例如)0xBB;如何someDecoder知道如何解码0xBB回去SomeType

Q2: wrt未指定标签;再次,我不确定如何将未指定的标记传递回其他东西。

asn.1

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