小编Man*_*ero的帖子

在C++中的OpenCV中无需裁剪即可旋转图像

我想旋转图像,但是如果没有裁剪,我无法获得旋转的图像

我原来的形象:

在此输入图像描述

现在我使用这段代码:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

// Compile with g++ code.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc

int main()
{
    cv::Mat src = cv::imread("im.png", CV_LOAD_IMAGE_UNCHANGED);
    cv::Mat dst;

    cv::Point2f pc(src.cols/2., src.rows/2.);
    cv::Mat r = cv::getRotationMatrix2D(pc, -45, 1.0);

    cv::warpAffine(src, dst, r, src.size()); // what size I should use?

    cv::imwrite("rotated_im.png", dst);

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

并获得以下图像:

在此输入图像描述

但我想得到这个:

在此输入图像描述

非常感谢您的帮助!

c++ opencv

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

如何在Javascript中预加载声音?

由于该onload功能,我可以轻松预装图像.但它不适用于音频.Chrome,Safari,Firefox等浏览器不支持onload音频标签中的功能.

如何在不使用JS库且不使用或创建HTML标记的情况下在Javascript中预加载声音?

javascript audio preload

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

在Matlab中的向量中推送变量

如何在Matlab中的向量中推送变量?

像这样的东西:

A = [5 2 3];
push(A, 7);
% A = [5 2 3 7]
Run Code Online (Sandbox Code Playgroud)

谢谢.

matlab

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

如何并行4与PARFOR一起使用Matlab中的Core i3

我有用于Ubuntu 64位的Matlab R2012b.我有一个Intel Core i3 CPU M 330 @ 2.13GHz×4.

我想使用parfor同时并行化4个循环.因为英特尔酷睿i3有2个核心和4个线程我使用此代码:

if matlabpool('size') == 0 % checking to see if my pool is already open
    matlabpool(4)
else
    matlabpool close
    matlabpool(4)
end
Run Code Online (Sandbox Code Playgroud)

我得到以下错误:

错误:

您请求的工作人员至少为4人,但群集"local"的NumWorkers属性设置为最多允许2名工作人员.要在比此更多的工作程序上运行通信作业(本地群集最多为12),请增加群集的NumWorkers属性的值.本地群集的NumWorkers的默认值是本地计算机上的核心数.

为什么?我机器中NumWorkers的默认值是2,但如果我可以同时执行4个循环,我该如何获取它?

parallel-processing matlab intel parfor

7
推荐指数
2
解决办法
6578
查看次数

在C++中从CSV获取数据的最快方法

我有一个大的CSV(大约75 MB)这种类型:

1,2,4
5,2,0
1,6,3
8,3,1
...
Run Code Online (Sandbox Code Playgroud)

我用这段代码存储我的数据:

#include <sstream>
#include <fstream>
#include <vector>

int main()
{
    char c; // to eat the commas

    int x, y, z;
    std::vector<int> xv, yv, zv;

    std::ifstream file("data.csv");
    std::string line;

    while (std::getline(file, line)) {
        std::istringstream ss(line);
        ss >> x >> c >> y >> c >> z;
        xv.push_back(x);
        yv.push_back(y);
        zv.push_back(z);
    }

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

它带我进入这个大的CSV(~75MB):

real        0m7.389s
user        0m7.232s
sys         0m0.132s
Run Code Online (Sandbox Code Playgroud)

真是太棒了!

最近,使用Sublime Text的Snippet,我找到了另一种读取文件的方法:

#include <iostream>
#include <vector>
#include <cstdio>

int main()
{
    std::vector<char> …
Run Code Online (Sandbox Code Playgroud)

c++ csv performance serialization

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

自动生成Find Cmake并安装它以进行导入

有没有办法自动创建一个FindXXX.cmake,其中XXX是我的Cmake项目?我看到许多项目他们手动创建了FindXXX.cmake,但我相信可以自动创建它.

而且,我应该在Linux上安装我的项目?

谢谢!

c++ cmake

4
推荐指数
2
解决办法
1598
查看次数

在 Qt Creator 中,用户代码段位于 Ubuntu 中的哪里?

我正在使用 Ubuntu 12.04 LTS 和 QT Creator 2.4.1,我的问题是:用户代码片段位于哪里?

我在usr/share/qtcreator/snippets中找到了 QT 的原始片段。但问题是我需要管理员权限。

问题是我想在没有管理员权限的情况下在其他电脑上导出我自己的片段

谢谢!

linux ubuntu qt qt-creator code-snippets

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

为什么在for循环中访问比在-O0中的范围内访问更快但在-O3中不访问?

我正在学习C++(和C++ 11)的性能.我需要在调试和发布模式下执行,因为我花时间进行调试和执行.

我对这两个测试感到惊讶,并且对不同的编译器标志优化有多大的改变.

测试迭代器1:

  • 优化0(-O0):更快.
  • 优化3(-O3):较慢.

测试迭代器2:

  • 优化0(-O0):较慢.
  • 优化3(-O3):更快.

PD:我使用以下时钟代码.

测试迭代器1:

void test_iterator_1()
{
    int z = 0;
    int nv = 1200000000;
    std::vector<int> v(nv);

    size_t count = v.size();

    for (unsigned int i = 0; i < count; ++i) {
        v[i] = 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试迭代器2:

void test_iterator_2()
{
    int z = 0;
    int nv = 1200000000;
    std::vector<int> v(nv);

    for (int& i : v) {
        i = 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:问题仍然是相同的,但对于-O3中的ranged-for,差异很小.所以对于循环1是最好的.

更新2:结果:

使用-O3:

t1: 80 …
Run Code Online (Sandbox Code Playgroud)

c++ performance iterator c++11

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