小编edd*_*die的帖子

如果文件夹不存在,如何创建文件和任何文件夹?

想象一下我想创建(或覆盖)以下文件: - C:\Temp\Bar\Foo\Test.txt

使用File.Create(..)方法,这可以做到这一点.

但是,如果我没有以下任何一个文件夹(从该示例路径,上面)

  • 温度
  • 酒吧

然后我得到一个DirectoryNotFoundException抛出.

那么.. 给定一个路径,我们如何递归创建创建文件所需的所有文件夹..对于该路径? 如果存在Temp或Bar文件夹,但Foo不存在......那么也会创建.

为简单起见,我们假设没有安全问题 - 所有权限都很好,等等.

.net c# file-access

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

使用OpenCV进行不稳定的人脸识别

我正在开发一个用于人脸识别的Android应用程序,使用JavaCV,它是OpenCV的非官方包装器.导入后com.googlecode.javacv.cpp.opencv_contrib.FaceRecognizer,我应用并测试以下已知方法:

  • LBPH使用createLBPHFaceRecognizer()方法
  • FisherFace使用createFisherFaceRecognizer()方法
  • EigenFace使用createEigenFaceRecognizer()方法

在我识别出检测到的脸部之前,我会校正旋转的脸部并裁剪出适当的区域,从而激发了这种方法

一般情况下,当我传递相机时,数据库中已存在一个面,识别就可以了.但这并不总是正确的.有时它很有可能识别未知面部(在训练样本的数据库中找不到).当我们在DB中有两个或更多相似特征的面孔(胡须,小胡子,眼镜......)时,这些面孔之间的识别可能会非常错误!

要使用测试面部图像预测结果,我应用以下代码:

public String predict(Mat m) {

        int n[] = new int[1];
        double p[] = new double[1];
        IplImage ipl = MatToIplImage(m,WIDTH, HEIGHT);

        faceRecognizer.predict(ipl, n, p);

        if (n[0]!=-1)
         mProb=(int)p[0];
        else
            mProb=-1;
            if (n[0] != -1)
            return labelsFile.get(n[0]);
        else
            return "Unkown";
    }
Run Code Online (Sandbox Code Playgroud)

我无法控制概率p的阈值,因为:

  • 小p <50可以预测正确的结果.
  • 高p> 70可以预测错误结果.
  • 中间p可以预测正确或错误.

同样,我不明白为什么在使用LBPH时,为什么predict()函数有时会出现大于100的概率?在Fisher和Eigen的情况下,它给出了非常大的值(> 2000)?? 有人可以帮助找到这些奇怪问题的解决方案吗?是否有任何建议可以提高认可的稳健性?特别是在两个不同面孔相似的情况下.

以下是使用Facerecognizer的整个类:

package org.opencv.javacv.facerecognition;

import static  com.googlecode.javacv.cpp.opencv_highgui.*;
import static  com.googlecode.javacv.cpp.opencv_core.*;

import static  com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_contrib.*;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter; …
Run Code Online (Sandbox Code Playgroud)

java android opencv face-recognition javacv

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

系统找不到java中指定的文件

我正在制作一个打开并读取文件的程序.这是我的代码:

import java.io.*;

public class FileRead{
    public static void main(String[] args){
        try{
            File file = new File("hello.txt");
            System.out.println(file.getCanonicalPath());
            FileInputStream ft = new FileInputStream(file);

            DataInputStream in = new DataInputStream(ft);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strline;

            while((strline = br.readLine()) != null){
                System.out.println(strline);
            }
            in.close();
        }catch(Exception e){
            System.err.println("Error: " + e.getMessage());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,我收到这个错误:

C:\Users\User\Documents\Workspace\FileRead\hello.txt
Error: hello.txt (The system cannot find the file specified)
Run Code Online (Sandbox Code Playgroud)

FileRead.javahello.txt在同一目录中的位置可以找到:

C:\Users\User\Documents\Workspace\FileRead
Run Code Online (Sandbox Code Playgroud)

我想知道我做错了什么?

java file

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

如何将指针作为函数参数返回

我正在尝试从函数参数返回数据指针:

bool dosomething(char *data){
    int datasize = 100;
    data = (char *)malloc(datasize);
    // here data address = 10968998
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

但是当我按以下方式调用函数时,数据地址变为零:

char *data = NULL;
if(dosomething(data)){
    // here data address = 0 ! (should be 10968998)
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c c++ pointers

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

Java邮件,设置回复地址不起作用

我写了一个小的电子邮件发送程序在java,它有from,toreply-to解决,当客户端尝试回复邮件时,它应该能够回复该reply-to地址.目前它无法正常工作,我的代码如下:

// File Name SendEmail.java

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail
{
   public static void main(String [] args)
   {

      // Recipient's email ID needs to be mentioned.
      String to = "xyz@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "abcd@gmail.com";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();
    properties.put("mail.smtp.from", "mnop@gmail.com");

      // Setup …
Run Code Online (Sandbox Code Playgroud)

java jakarta-mail

15
推荐指数
2
解决办法
3万
查看次数

C++内存表

任何人都可以推荐一个轻量级的开源C++表数据结构,其数据访问类似于数据库表吗?(即2D阵列但具有命名列 - 理想情况下,每列将保存单一类型的数据[见下文]).

我快速浏览了一下谷歌,但没有找到任何有用的东西.

我看到它的方式,这些是我可以选择的选项:

  1. 从头开始写我自己的(不要真的想发明轮子)
  2. 从mySQL ++中删除SimpleResult类并破解它
  3. 使用sqlite(不知道这将是多么轻的 - 因为我不需要查询引擎和所有其他东西)
  4. 在这里询问是否有人知道这样的图书馆

所以我在这里,选择最快的路线(希望这也是最有效利用我的时间的路线 - 因为这里推荐的任何东西都可能经过同行评审).

那么,任何人都可以推荐一个提供"数据库表"界面的C++类/类集吗?

主要要求是:

  1. 列有名称
  2. 可以使用行,列索引访问单元格
  3. 我可以在表格中添加行和列(理想情况下,我也可以删除它们)
  4. (很高兴):列可以有类型,因此可以节省转换为字符串或从字符串转换的成本

[编辑]

为了进一步演示我想如何使用该库,请参阅下面的伪代码,看看这个类的简单使用(简单,现在意味着行和列的迭代 - 这将非常酷).现在只是保持简单:

typedef MemoryTable::ColType ColumnType;

table = new MemoryTable();

// Set up the structure (this can be modified later using removeColumn() etc
table->addColumn(ColumnType::Integer, 'id');
table->addColumn(ColumnType::String,  'name');
table->addColumn(ColumnType::Boolean, 'gender');
table->addColumn(ColumnType::Double,  'weight');

for (size_t i=0; i<10; i++)
{
    table->addRow();
    numrows = table->getNumRows();
    std::cout << "We now have " << numrows << " rows.\n";

    // Note …
Run Code Online (Sandbox Code Playgroud)

c++

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

错误:将'const ...''传递为'...'的'this'参数会丢弃限定符

stockListType.cpp:58:从这里实例化

/usr/include/c++/4.2.1/bits/stl_algo.h:91: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
/usr/include/c++/4.2.1/bits/stl_algo.h:92: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
/usr/include/c++/4.2.1/bits/stl_algo.h:94: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
/usr/include/c++/4.2.1/bits/stl_algo.h:98: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
/usr/include/c++/4.2.1/bits/stl_algo.h:100: error: passing ‘const stockType’ as ‘this’ argument of ‘bool stockType::operator<(const stockType&)’ discards qualifiers
Run Code Online (Sandbox Code Playgroud)

以上是我得到的错误,希望有人向我解释这意味着什么.我通过在重载运算符前面放置一个常量来解决错误.我的程序是一个股票市场应用程序,它读取包含字符串,5个双精度和int的文件.我们通过字符串符号和索引增益来整理程序.这本书指示我使用向量来存储每个数据.如下所示,重载运算符会比较每个符号,并使用容器的排序成员函数对其进行排序.我的问题是为什么我必须在>和<的重载运算符前放置一个常量.但不是> =,<=,==,!=重载运算符.

//function was declared in stockType.h and implemented …
Run Code Online (Sandbox Code Playgroud)

c++

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

boost :: asio异步服务器设计

目前我正在使用设计,当服务器读取前4个字节的流然后在头解码后读取N个字节.

但我发现第一次async_read和第二次读取之间的时间是3-4毫秒.我刚从回调中打印出控制台时间戳进行测量.我总共发送了10个字节的数据.为什么需要这么多时间阅读?

我在调试模式下运行它,但我认为1个调试连接并不是因为从socket读取之间有3毫秒的延迟.也许我需要另一种方法来削减"数据包"上的TCP流?

更新:我在这里发布了一些代码

void parseHeader(const boost::system::error_code& error)
        {
            cout<<"[parseHeader] "<<lib::GET_SERVER_TIME()<<endl;
            if (error) {
                close();
                return;
            }
            GenTCPmsg::header result = msg.parseHeader();
            if (result.error == GenTCPmsg::parse_error::__NO_ERROR__) {
                msg.setDataLength(result.size);
                boost::asio::async_read(*socket, 
                    boost::asio::buffer(msg.data(), result.size),
                    (*_strand).wrap(
                    boost::bind(&ConnectionInterface::parsePacket, shared_from_this(), boost::asio::placeholders::error)));
            } else {
                close();
            }
        }
        void parsePacket(const boost::system::error_code& error)
        {
            cout<<"[parsePacket] "<<lib::GET_SERVER_TIME()<<endl;
            if (error) {
                close();
                return;
            }
            protocol->parsePacket(msg);
            msg.flush();
            boost::asio::async_read(*socket, 
                boost::asio::buffer(msg.data(), config::HEADER_SIZE),
                (*_strand).wrap(
                boost::bind(&ConnectionInterface::parseHeader, shared_from_this(), boost::asio::placeholders::error)));
        }
Run Code Online (Sandbox Code Playgroud)

如您所见,unix时间戳在3-4毫秒内有所不同.我想了解为什么在parseHeader和parsePacket之间经过这么多时间.这不是客户端问题,摘要数据是10个字节,但我不能发送更多,延迟恰好是在调用之间.我正在使用Flash客户端版本11.我所做的只是通过打开的套接字发送ByteArray.我不确定客户的延误.我一次发送所有10个字节.我如何调试实际延迟的位置?

c++ architecture networking boost boost-asio

13
推荐指数
2
解决办法
9846
查看次数

从C++/CLI调用C#dll函数

我有一个C#dll.代码如下:

public class Calculate
{
    public static  int GetResult(int arg1, int arg2)
    {
        return arg1 + arg2;
    }

    public static  string GetResult(string arg1, string arg2)
    {
        return arg1 + " " + arg2;
    }

    public static   float GetResult(float arg1, float arg2)
    {
        return arg1 + arg2;
    }

    public Calculate()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我打算C++通过这种方式调用这个dll .

[DllImport("CalculationC.dll",EntryPoint="Calculate", CallingConvention=CallingConvention::ThisCall)]
extern void Calculate();

[DllImport("CalculationC.dll",EntryPoint="GetResult", CallingConvention=CallingConvention::ThisCall)]
extern int GetResult(int arg1, int arg2);
Run Code Online (Sandbox Code Playgroud)

这是函数,其中称为GetResult

private: System::Void CalculateResult(int arg1, int arg2)
{
    int …
Run Code Online (Sandbox Code Playgroud)

c# dll interop c++-cli dllimport

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

在docker 1.12中将vip addr绑定到服务的每个容器中的目的是什么?

Docker使用ipvs的NAT模式来获得服务负载平衡,在NAT模式下,真实服务器对VIP一无所知.

根据我的理解,VIP仅用于来自不同服务的容器之间的通信,因此它应该只出现在iptables的mangle表中.

docker

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