小编lei*_*iyc的帖子

使用 Python 将内容从单个文件夹拆分为多个子文件夹

在我的文件中,我有大量jpg格式的图像,它们被命名为[fruit type].[index].jpg
不是手动创建三个新的子文件夹来将图像复制并粘贴到每个子文件夹中,而是有一些 python 代码可以解析图像的名称并根据名称选择将图像重定向到的位置fruit type,在同时在fruit type解析新文件夹时创建一个新的子文件夹?


  • 训练集(文件)
    • 苹果.100.jpg
    • 苹果.101.jpg
    • 苹果.102.jpg
    • 苹果.103.jpg
    • 桃子.100.jpg
    • 桃子.101.jpg
    • 桃子.102.jpg
    • 橙色.100.jpg
    • 橙色.101.jpg

  • 训练集(文件)
    • 苹果(文件)
      • 苹果.100.jpg
      • 苹果.101.jpg
      • 苹果.102.jpg
      • 苹果.103.jpg
    • 桃子(文件)
      • 桃子.100.jpg
      • 桃子.101.jpg
      • 桃子.102.jpg
    • 橙色(文件)
      • 橙色.100.jpg
      • 橙色.101.jpg

python directory

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

printf vs cout表现

void perfprint(unsigned int count)
{
    char a[100] = "fosjkdfjlsjdflw0304802";
    for(unsigned int i = 0;i<count;++i)
    {
        printf("%s", a);
    }
}

void perfcout(unsigned int count)
{
    char a[100] = "fosjkdfjlsjdflw0304802";
    for(unsigned int i = 0;i<count;++i)
    {
        cout << a;
    }
}
Run Code Online (Sandbox Code Playgroud)

环境:C++,VS 2010,Windows 7,32位,Core-i7,4GB,3.40 GHz

我测试了与功能count = 100005次,每次.使用测量性能QueryPerformanceCounter.

perfprint> perfprint毫秒(5次运行的平均值)

perfcout> ~850毫秒(5次运行的平均值)

这是否意味着printf perfcout比cout更快

编辑:

使用/ Ox,/ Ot,Release版本中没有调试信息

并用~9000在perfcout方法,结果是为相同printf,即~10x

编辑2:

总而言之,cout比快std::ios_base::sync_with_stdio(false);.上述观察的原因是由于控制台输出.当将输出重定向到文件时,事情开始转向!

c++ windows

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

OpenALPR的分段错误

我正在尝试在Laravel Homestead(Ubuntu 18.04)上安装OpenALPR。首先,我尝试了“最简单的方法”。我正在尝试运行:

Error opening data file /usr/share/openalpr/runtime_data/ocr/lus.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.
Failed loading language 'lus'
Tesseract couldn't load any languages!
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

cd进入/usr/share/openalpr/runtime_data/ocr目录,但没有找到lus.traineddata文件。但是有一个ocr文件夹,还有一个lus.traineddata。我从那里将其复制到目录,然后再次尝试识别,但是这次:

-(!)运行时目录'/ usr / share / openalpr / runtime_data'无效。缺少该国家的OCR数据:“我们”!加载OpenALPR时出错

然后我尝试了简易方法。一切都正常编译。但:

分段故障(核心已转储)

c++ ocr openalpr

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

如何使类成员变量与函数模板的返回类型相同?

我正在为sqlite orm使用第三方C++库.该库具有返回模板对象的函数.对象的类型是一个非常长的模板,它取决于数字表等.这就是提供的示例总是使用的原因auto.这是一个例子:

auto storage = make_storage("db.sqlite",
                            make_table("users",
                                       make_column("id", &User::id, autoincrement(), primary_key()),
                                       make_column("first_name", &User::firstName),
                                       make_column("last_name", &User::lastName),
                                       make_column("birth_date", &User::birthDate),
                                       make_column("image_url", &User::imageUrl),
                                       make_column("type_id", &User::typeId)),
                            make_table("user_types",
                                       make_column("id", &UserType::id, autoincrement(), primary_key()),
                                       make_column("name", &UserType::name, default_value("name_placeholder"))));
Run Code Online (Sandbox Code Playgroud)

storage从函数返回的对象的类型很长,如下所示:

sqlite_orm::internal::storage_t<sqlite_orm::internal::table_t<Feed::MyClass, sqlite_orm::internal::column_t<Feed::MyClass, int, int const& (Feed::MyClass::*)() const, void (Feed::MyClass::*)(int), sqlite_orm::constraints::autoincrement ...
Run Code Online (Sandbox Code Playgroud)

我的问题是我想将此storage对象用作另一个类的成员变量.我如何告诉客户端类函数的返回类型make_storage

c++ templates

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

如何在 C++ 中将 cin 设置为类的成员函数?

我正在制作一个小型控制台游戏,我有一个player类,其中包含用于统计数据的私有整数和用于名称的私有字符串。我想要做的是向用户询问他们的姓名,并将其存储到类中的私有name变量中player。我收到一个错误说明:

error: no match for 'operator>>'   
(operand types are 'std::istream {aka std::basic_istream<char>}' and 'void')
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

主程序

#include "Player.h"
#include <iostream>
#include <string>

using namespace std;

int main() {

    Player the_player;
    string name;
    cout << "You wake up in a cold sweat. Do you not remember anything \n";
    cout << "Do you remember your name? \n";

    cin >> the_player.setName(name);
    cout << "Your name is: " << the_player.getName() << "?\n";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

播放器.h

#ifndef PLAYER_H …
Run Code Online (Sandbox Code Playgroud)

c++ console codeblocks

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

必须实现C++中的虚函数?

class A
{
public:
    A(){}
    virtual void func();
};
class B:public A
{
    void func(){}
}
Run Code Online (Sandbox Code Playgroud)

如果func未实现,则在定义一个对象时会出现链接错误A.所以为什么?我没打电话func.

c++ virtual

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

如何解决警告“编译器可以假设'object'的地址永远不会为NULL”

我使用gcc8编译以下代码:

#include <iostream>

class person
{
    public:
        virtual void setage()=0;
};

void test(person &object)
{
    if (&object == NULL) {
        std::cout << "NULL object1" << std::endl;
    }

    if (!(&object)) 
    {
        std::cout << "NULL object1" << std::endl;
    }
}

int main()
{
    person *object=NULL;
    person &object1=*object;

    test(object1);
}
Run Code Online (Sandbox Code Playgroud)

然后,在编译并运行后会出现两个警告:

$ g ++ -std = c ++ 14 -pthread -fgnu-tm -O2 -Wall -Wextra -pedantic -pthread -pedantic-errors main.cpp -lm -latomic -lstdc ++ fs && ./a.out

main.cpp:在函数“ void test(person&)”中:

main.cpp:11:17:警告:编译器可以假定“对象”的地址永远不会为NULL [-Waddress]

 if (&object == …
Run Code Online (Sandbox Code Playgroud)

c++ gcc-warning

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

GCC8.2如何启用警告:数组下标超出数组范围[-Warray-bounds]

我想在gcc8.2下启用数组边界检查,因此它可以帮助检查在编译期间数组下标是否超出范围,它可能会给出如下警告: array subscript is above array bounds [-Warray-bounds]

我使用coliru进行了演示:

#include <iostream>

struct A
{
    int a;
    char ch[1];
};

int main() 
{
    volatile A test;
    test.a = 1;
    test.ch[0] = 'a';
    test.ch[1] = 'b';
    test.ch[2] = 'c';
    test.ch[3] = 'd';
    test.ch[4] = '\0';
    std::cout << sizeof(test) << std::endl
              << test.ch[1] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

编译并运行以下命令:

g++ -std=c++11  -O2 -Wall main.cpp  && ./a.out
Run Code Online (Sandbox Code Playgroud)

输出显示如下,没有任何警告或错误。

8
b
Run Code Online (Sandbox Code Playgroud)

那么gcc8.2是否支持数组边界检查?如何启用它?

编辑:

更进一步,基于第一个答案,如果删除volatilein line volatile A test;,是否可以启用数组边界检查?

谢谢。

c c++ arrays gcc8

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

What is type if uint8_t value multiplied by uint8_t

What is type if uint8_t value multiplied by uint8_t? For example:

#include <iostream>

int main()
{
    uint8_t a = 'a', b = 'b';
    std::cout << a * b;
}
Run Code Online (Sandbox Code Playgroud)

The output of the program is 9506. Will a * b be uint32_t type data?
Why not still be a uint8_t type?
Thanks.

c++

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

这是系统资源吗?(或者如何知道是否需要删除指针) - 在C++中使用C语言

看看这个cplusplus.com时间示例,让我更多地思考指针.代码没有delete(也没有new).

警告:我一般尽量避免使用指针,所以我绝对不会精通.

我从下面的例子中删除了很多代码,以便专注于我的问题:

/* time example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */

int main ()
{
  time_t timer;
  time(&timer);  /* get current time; same as: timer = time(NULL)  */

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我应该在此结束时删除计时器,还是只是指向系统资源?我的理解是每当我使用时new,我都应该使用delete.认为我没有使用是不对的new,我不需要delete.

这个堆栈问题似乎是我正在寻找和解释我不需要delete(它匹配网站上的示例代码),因为我没有做new; 但是,我不确定我使用的函数是不是在new某个地方调用(因为我发现它很难读取源代码).我怎么知道?我需要知道吗?

我真的很讨厌使用这个旧的时间代码,不能等待即将到来的C++ 20 chrono更新,但这对我的项目来说太遥远了.

c++ time pointers delete-operator

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

在* args中打印项目

我正在实现装饰器,并试图获取输出

  • “你好,约翰”
  • “你好汤姆”
  • “你好,约翰”
  • “你好汤姆”

请有人可以解释为什么.format(i for i in args)不进行迭代JohnTom而是打印变量的位置args

def doDouble (func):
    def wrapper_doDouble (*args):
        func(*args)
        func(*args)
    return wrapper_doDouble

@doDouble
def functionToPrint(*args):
    print ("Hi {}".format(i for i in args))

functionToPrint("John", "Tom")
Run Code Online (Sandbox Code Playgroud)

这是我当前的输出:

Hi <generator object functionToPrint.<locals>.<genexpr> at 0x03CEFD80>
Hi <generator object functionToPrint.<locals>.<genexpr> at 0x03CDA1B0>
Run Code Online (Sandbox Code Playgroud)

python

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