小编Kir*_*ril的帖子

如何用java将图像分成两部分

我想知道是否存在基于某些特征分割图像的"智能"方式.

图像是300x57,黑色和白色(实际上是灰度,但大多数颜色是黑色或白色),它由两个主要特征(让我们称之为斑点)组成,由黑色空间分隔,每个斑点的宽度和高度略有不同,斑点的位置也各不相同,斑点永远不会重叠!

这是图像"看起来"的样子:

-------------------------
----WWW---------WWWWW----
---WWWWWWW----WWWWWW-----
-----WWWW-------WWW------
-------------------------
Run Code Online (Sandbox Code Playgroud)

由此产生的分裂将是这样的:

------------     -------------
----WWW-----     ----WWWWW----
---WWWWWWW--     --WWWWWW-----
-----WWWW---     ----WWW------
------------     -------------
Run Code Online (Sandbox Code Playgroud)

我计划采取的步骤,以分割图像:

  1. 将图像从一侧扫描到另一侧.
  2. 确定blob的边缘.
  3. 取两个内边缘之间的距离.
  4. 在内部距离的中间分割图像.
  5. 将两个图像另存为单独的文件.

如果我规范化图像宽度会很好,所以我的所有图像在保存时都具有统一的宽度.

我没有图像处理的经验,所以我不知道这是一种有效的方法.我目前正在使用BufferedImage,获取宽度/高度,迭代每个像素等等.我的问题没有错误的解决方案,但我正在寻找更高效的解决方案(更少代码+更快).我也一直在研究java.awt.Graphics ......

如果我能找到更有效的方法来完成这项任务,我将不胜感激.我想坚持使用Java的内置库,在这种情况下,BufferedImage或Graphics2D是最有效的吗?

编辑:这是阅读建议后的代码:

public void splitAndSaveImage( BufferedImage image ) throws IOException
{
    // Process image ------------------------------------------         
    int height = image.getHeight();
    int width = image.getWidth();
    boolean edgeDetected = false;
    double averageColor = 0;
    int threshold = -10;
    int rightEdge = 0;
    int leftEdge = 0;
    int middle = 0;

    // Scan the image and …
Run Code Online (Sandbox Code Playgroud)

java graphics image-manipulation image-processing

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

如何在运行时为反射方法创建委托

我想创建一个Delegate反射方法,但Delegate.CreateDelegate需要Type指定委托.是否有可能动态创建一个匹配任何功能的'委托'?

这是一个简单的例子:

class Functions
{
    public Functions()
    {

    }

    public double GPZeroParam()
    {
        return 0.0;
    }

    public double GPOneParam(double paramOne)
    {
        return paramOne;
    }

    public double GPTwoParam(double paramOne, double paramTwo)
    {
        return paramOne+paramTwo;
    }
}

static void Main(string[] args)
{
    Dictionary<int, List<Delegate>> reflectedDelegates = new Dictionary<int, List<Delegate>>();
    Functions fn = new Functions();
    Type typeFn = fn.GetType();
    MethodInfo[] methods = typeFn.GetMethods();

    foreach (MethodInfo method in methods)
    {
        if (method.Name.StartsWith("GP"))
        {
            ParameterInfo[] pi = method.GetParameters();

            if …
Run Code Online (Sandbox Code Playgroud)

c# reflection delegates dynamic

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

正则表达式忽略下划线

我有一个正则表达式([-@.\/,':\w]*[\w])*,它匹配文本中的所有单词(包括像IBM这样的标点符号),但我想让它排除下划线,我似乎无法弄清楚如何做到这一点...我尝试添加^[_](例如(^[_][-@.\/,':\w]*[\w])*)但它只是将所有单词分解为字母.我想保留单词匹配,但我不希望在其中包含带下划线的单词,也不希望单词完全由下划线组成.

什么是正确的方法来做到这一点?

PS

  • 我的应用程序是用C#编写的(如果这有任何区别).
  • 我不能使用A-Za-z0-9因为我必须匹配单词而不管语言(可能是中文,俄文,日文,德文,英文).

更新
这是一个例子:

"IBM应该被解析为一个单词w_o_r_d!俄语也应该起作用:мплексисторическихсобытий."

比赛应该是:

I.B.M.  
should  
be  
parsed  
as  
one  
word  
Russian  
should  
work  
too  
??????  
????????????  
???????  
Run Code Online (Sandbox Code Playgroud)

请注意,w_o_r_d不应该匹配.

c# regex regex-negation

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

如何从boost :: posix_time :: ptime获取自纪元时间以来的毫秒时间

我已经在SO上看到了其他一些答案,这些答案表明我们可以通过从"其他"时间减去纪元时间从毫秒中获取时间,但是当我尝试它时它不起作用:

ptime epoch = time_from_string("1970-01-01 00:00:00.000");
ptime other = time_from_string("2011-08-09 17:27:00.000");

long diff = (other-epoch).total_milliseconds();
Run Code Online (Sandbox Code Playgroud)

在这个阶段差异是-1349172576,它应该是一个正数,因为"其他"时间是2011年.有人知道是什么原因造成的吗?从纪元开始,获得毫秒的正确方法是什么?

另外,我试图从毫秒开始构造一个ptime对象:

ptime result = from_time_t(diff);
Run Code Online (Sandbox Code Playgroud)

然后结果变为:"1927-Apr-01 13:50:24",它应该是"2011年8月9日17:27:00.000".这里有什么收获?

更新:

好的,所以我的错误源于我有2个程序,一个是C#(8字节/ 64位长)和一个C++(4字节/ 32位长); 无论如何,这里没有描述这种互动.

但是,当我使用时long long,该值为正,但结果日期(构造from_time_t)仍然不正确:"2012-Oct-02 10:09:36".

c++ time datetime boost date

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

如何按值对 LevelDB 进行排序

我使用leveldb来存储记录(键值),其中键是 64 位哈希值,值是双精度值。打个比方:将 64 位哈希视为客户的唯一 ID,并将其作为帐户余额(即他们的帐户中有多少钱)。我想按帐户余额对数据库进行排序,并首先列出帐户余额最高的客户。但是,数据库无法装入内存,因此我必须使用其他方法对其进行排序,以便按帐户余额进行排序。

我正在考虑使用STXXL,但它要求我将数据库的副本复制到单个平面文件中,然后我可以使用 STXXL 进行外部排序(这将生成一堆较小的文件,对它们进行排序,然后合并它们回到另一个单一平面文件中)。是否有更好的方法来对数据进行排序,或者我应该使用 STXXL 排序?

c++ sorting algorithm external-sorting leveldb

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

如何将本机库复制到Visual Studio 2010中的单元测试临时目录

我的项目依赖于我通常通过MSBuild目标复制到输出目录的一些本机库(DLL).运行应用程序时没有问题,但我在Visual Studio中编写了一些单元测试,每次运行单元测试时,程序集和可执行文件都会从输出目录复制到staging文件夹中:C:\path\to\MyProject\TestResults\myWorkStationName 2012-03-20 13_53_56\Out

遗憾的是,本机DLL不会复制到暂存目录中,并且会在每次测试运行时生成暂存目录.是否有一个MSbuild目标允许我将东西复制到临时目录?

PS我不确定"staging目录"是否是正确的术语,所以请原谅我的无知,如果不是:).

c# msbuild dependencies visual-studio-2010 visual-studio

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

如何在servlet中检索子域?春天有没有帮手

我首先想知道是否有一种使用纯servlet从URL获取子域的内置方法?

然后,如果春天有任何助手?

所以我的网址就像:

jonskeet.stackoverflow.com
Run Code Online (Sandbox Code Playgroud)

JonSkeet是子域名.

我将创建一个过滤器,它将根据子域值加载一个对象.

顺便说一句,在创建过滤器时,有没有办法订购过滤器以确保它们按特定顺序点火?

java spring servlets spring-mvc

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

将CSS Selector转换为XPATH

我在网上看到了一篇关于如何将CSS选择器映射到XPATH查询的文章,所以我试图弄清楚是否有任何.NET库可以进行映射/转换.如果您对如何执行映射有任何参考或任何想法(如果库不可用),请告诉我.

.net css c# xpath css-selectors

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

链接器错误与Qt信号/插槽示例

我有一个Qt应用程序,有多个类使用信号和插槽,它编译得很好.但是,当我在主CPP(main.cpp)文件中创建自定义类时,我收到链接器错误.

这是我使用的代码:

class Counter : public QObject
{
    Q_OBJECT

public:
    Counter() { m_value = 0; }

    int value() const { return m_value; }

public slots:
    void setValue(int value)
    {
     if(value!=m_value)
     {
         m_value = value;
         qDebug() << "Value " << value;
         emit valueChanged(value);
     }
    }

signals:
    void valueChanged(int newValue);

private:
    int m_value;
};

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    Counter a, b;
    QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));

    a.setValue(12);     // a.value() == 12, b.value() == 12
    b.setValue(48);     // a.value() == …
Run Code Online (Sandbox Code Playgroud)

c++ qt linker-errors visual-studio-2010

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

如何在 QuickFixj 中动态地就 SenderCompID 和 TargetCompID 达成一致?

假设我正在运行一个基于网络的交换并且有一个新客户注册。我为该客户提供了一个新的 CompID,现在我想将该 CompID 添加到我的接受方。我是否必须重新启动我的接受器或者可以动态完成吗?

必须提前就 CompID 达成一致,然后将其粘贴到某处的配置中,这似乎不太具有可扩展性。

我见过一些据说可以做到这一点的示例,但它们似乎只是通过将配置设置为*. 还有其他方法可以做到这一点吗?

java quickfix fix-protocol quickfixj

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