小编2c2*_*c2c的帖子

为什么Vim专家更喜欢缓冲区而不是标签?

不懂缓冲区.当我在同一个选项卡上打开3个文件并关闭我的窗口时,我一般都很恼火地发现下次打开其中一个文件时,有一些奇怪的交换文件挥之不去,给我一些麻烦的消息.但是我一次又一次地读到这些东西是我错过的生产力必杀技,而且这些标签是为了让平民使用.

所以我问你,Vim专家:在标签上使用缓冲区有什么好处?我不知道差异有多大差别,但我认为自己只是在初级中级水平上操作Vim.是:ls :b#真的速度远远超过gt荷兰国际集团在吗?我觉得它必须比这更深入.

vi vim

210
推荐指数
5
解决办法
5万
查看次数

使用opencv匹配来自一组图像的图像,以便在C++中进行识别

编辑:我通过这篇文章获得了足够的声誉,能够用更多链接编辑它,这将帮助我更好地理解我的观点

玩isaac绑定的人经常在小基座上遇到重要的物品.

目标是让用户对项目能够按下按钮感到困惑,然后按钮将指示他"装箱"该项目(想想桌面装箱).该框为我们提供了感兴趣的区域(实际项目加上一些背景环境),以便与整个项目网格进行比较.

理论用户盒装项目 在此输入图像描述

项目的理论网格(没有更多,我只是从isaac维基的绑定中撕掉了这个) 在此输入图像描述

标识为用户装箱的项目的项目网格中的位置将表示图像上的特定区域,该区域与提供关于项目的信息的isaac wiki的绑定的适当链接相关.

在网格中,该项目是从底行开始的第3列第3列.我在下面尝试的所有内容中都使用了这两个图像


我的目标是创建一个程序,可以从游戏"Isaac的绑定"中手动裁剪项目,通过查找比较图像与游戏中项目表的图像来识别裁剪项目,然后显示正确的项目维基页面.

这将是我的第一个"真正的项目",因为它需要大量的图书馆学习才能得到我想要的东西.这有点令人难以招架.

我只是通过谷歌搜索搞砸了几个选项.(您可以通过搜索方法名称和opencv快速找到我使用过的教程.由于某种原因,我的帐户受链接发布限制很多)

使用bruteforcematcher:

http://docs.opencv.org/doc/tutorials/features2d/feature_description/feature_description.html

#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include <opencv2/legacy/legacy.hpp>
#include <opencv2/nonfree/features2d.hpp>
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

void readme();

/** @function main */
int main( int argc, char** argv )
{
  if( argc != 3 )
   { return -1; }

  Mat img_1 = imread( argv[1], CV_LOAD_IMAGE_GRAYSCALE );
  Mat img_2 = imread( argv[2], CV_LOAD_IMAGE_GRAYSCALE );

  if( !img_1.data || !img_2.data )
   { return -1; }

  //-- Step 1: Detect the keypoints …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image matching

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

理解mergesort的递归

我看到的大多数mergesort实现与此类似.算法书介绍以及我搜索的在线实施.我的递归方法并没有比弄乱Fibonacci一代(这很简单),所以也许是多次递归让我大吃一惊,但是我甚至无法介绍代码并理解甚至在我击中之前发生了什么合并功能.

如何踩过这个?我应该采取一些策略或阅读来更好地理解这里的过程吗?

void mergesort(int *a, int*b, int low, int high)
{
    int pivot;
    if(low<high)
    {
        pivot=(low+high)/2;
        mergesort(a,b,low,pivot);
        mergesort(a,b,pivot+1,high);
        merge(a,b,low,pivot,high);
    }
}
Run Code Online (Sandbox Code Playgroud)

和合并(虽然坦率地说,在我到达这一部分之前,我在精神上陷入困境)

void merge(int *a, int *b, int low, int pivot, int high)
{
    int h,i,j,k;
    h=low;
    i=low;
    j=pivot+1;

    while((h<=pivot)&&(j<=high))
    {
        if(a[h]<=a[j])
        {
            b[i]=a[h];
            h++;
        }
        else
        {
            b[i]=a[j];
            j++;
        }
        i++;
    }
    if(h>pivot)
    {
        for(k=j; k<=high; k++)
        {
            b[i]=a[k];
            i++;
        }
    }
    else
    {
        for(k=h; k<=pivot; k++)
        {
            b[i]=a[k];
            i++;
        }
    }
    for(k=low; k<=high; k++) a[k]=b[k];
}
Run Code Online (Sandbox Code Playgroud)

algorithm recursion merge mergesort

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

线程之间的C++通信

我有几个类,每个类在不同的线程中打开一个不同的程序,并使用CreateProcess(如果有更多面向C++的方式来执行此操作,让我知道 - 我看了).

某些类依赖于正在运行的其他程序之一.如果A停止,B必须停止.我之前制作了这段代码,然后我的解决方案就是拥有一个带有静态函数的类,它运行各种程序和保持其"状态"的静态成员变量.我也在使用CreateThread.

回想起来,这种方法看起来很脆弱,看起来很尴尬.我不知道使用这样的"静态类"是否是好的做法(特别是回想一下初始化状态成员变量有多尴尬).我想让每个类都包含自己的run函数.但是,我正在考虑的问题是,如果A尴尬地停止了,那么如何让B级知道.他们仍然需要知道一种了解彼此状态的方法.请注意,我想std::thread在此返工中使用,并且我几乎没有多线程经验.谢谢你的帮助.

c++ multithreading thread-safety c++11

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

如何在大型复杂滤波器上连接之前使用ffmpeg应用1:1 SAR

我使用ffmpeg以类似于此的方式连接视频:

我的输入遇到了一个奇怪的错误

[Parsed_concat_0 @ 000000002a05bb80] Input link in10:v0 parameters (size 1280x720, SAR 2049:2048) 
do not match the corresponding output link in0:v0 parameters (1280x720, SAR 1:1)
Run Code Online (Sandbox Code Playgroud)

根据我的研究,我需要使用setsar强制所有视频在我结束之前为1:1,但我不知道如何在我的过滤器中执行此操作.

ffmpeg concatenation aspect-ratio

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