【问题标题】:Rotating a QByteArray旋转 QByteArray
【发布时间】:2023-03-24 22:20:01
【问题描述】:

我想在取景器中旋转相机。我的想法是获取 QByteArray 并旋转它,因此像素在 X 和 Y 方向上镜像显示。 所以如果我的数组看起来像这样:

5 2 6 8
3 5 2 1
6 7 4 5
3 2 1 7

应该是这样的:

7 1 2 3
5 4 7 6
1 2 5 3
8 6 2 5

谁能告诉我该怎么做?

【问题讨论】:

    标签: c++ arrays qt camera rotation


    【解决方案1】:

    你可以像这样使用 std::reserve

    #include <algorithm> 
    
    QByteArray reverse = barr; 
    std::reverse(reverse.constBegin(), reverse.constEnd());
    

    或者使用这个

    QByteArray reverse;
    std::reverse_copy(barr.constBegin(), barr.constEnd(), reverse.begin());
    

    【讨论】:

    【解决方案2】:

    您如何访问您的QByteArray

    如果迭代器是可接受的解决方案,您可以这样做:

    for(std::reverse_iterator<char*> rBegin(myQByteArray.data() + myQByteArray.size()); rBegin != std::reverse_iterator<char*>(myQByteArray.data()); ++rBegin){
        std::cout << *rBegin << " ";
    }
    

    请注意,如果您想使用const char* QByteArray::data() 调用,您只需在模板中使用const 初始化您的std::reverse_iterators:

    std::reverse_iterator<const char*> rBegin(myQByteArray.data())
    

    【讨论】:

    • 它给了我一个关于 std::cout 的错误 .. 有错误吗?应该算吗?但是又出现了形参列表不对的错误
    • @Der_Pätti 我在这个系统上没有QByteArray,但你可以在这里看到const char* 的工作:ideone.com/BS0xHR
    • 改用这个:#include QByteArray reverse = seq; std::reverse(reverse.constBegin(), reverse.constEnd());
    • @danics 您的解决方案是最好的,您可以添加它作为答案吗?或者,如果您不喜欢,我会编辑我的解决方案。
    • @danics 有一个错误,在 中你不能给一个常量一个值。我是否必须更改代码中的某些内容?
    猜你喜欢
    • 2019-11-11
    • 2016-11-04
    • 2020-09-18
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2017-03-15
    相关资源
    最近更新 更多