小编Dan*_*atz的帖子

如何在QtCreator中链接opencv并使用Qt库

这个问题必须重复多次,但它不起作用,有时它仍然没有答案.信息来源主要是
http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml
http://www.youtube.com/watch?v=dgcXYQijV6c

这是我认为应该/可以做的事情的总和.(现在它对我有用.)希望我从一开始就提到了一切,目的是写一个非常清晰的教程.

为QtCreator安装OpenCV

  1. 我已经安装了MS Visual Studio 2010 Professional.(作为学生我有免费执照) - 我认为这不是必要的,只是提一下
  2. 下载:适用于Windows 32位的Qt 5.0.1(MinGW 4.7,823 MB)
    2.1 安装:警告,Qt使用的所有内容(例如OpenCV)必须位于名称中不包含空格的目录中. - 即"程序文件"是错误的.(但我不希望不同的程序文件直接在C上累积,所以我只创建了一个文件夹"Programs",其中安装了所有重要的东西)
  3. 下载: cmake-2.8.10.2-win32-x86.exe - 为所有用户安装(可以在Program Files中)
  4. 下载: OpenCV-2.4.0.exe,解压缩到:C:\ Programs\opencv24 - 它将创建一个目录"opencv"; 添加另一个文件夹"opencv_bin".现在它看起来像这样:
    C:\ Programs\opencv24\opencv*
    C:\ Programs\opencv24\opencv_bin
  5. 设置PATH环境变量,以便有一个指向MinGW编译器的链接.例如C:\ Programs\Qt\Qt5.0.1\Tools\MinGW\bin;
  6. 启动cmake-gui.exe
    6.1 源代码:设置OpenCV的默认目录; C:\ Programs\opencv24\opencv
    6.2 二进制文件:设置opencv_bin目录; C:\ Programs\copencv24\opencv_bin
    6.3 点击配置:
    • 选择MinGW Makefile指定本机编译器,单击"下一步"
    • 字段C代表gcc.exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/gcc.exe
    • Field C++适用于g ++.exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/g ++ EXE
    • Field fortran可以为空,点击完成
    6.4 将出现许多红线到搜索字段逐个输入:WITH_QT,WITH_TBB,WITH_IPP,WITH_CUDA,CMAKE_BUILD_TYPE
    • WITH_QT - 必须选中.
    • WITH_TBB,WITH_IPP,WITH_CUDA - …

c++ qt opencv qt-creator

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

为什么在C++中默认签名'char'?

为什么char应默认在-128到127的范围内,它应该代表一个'字符',其文本表示的范围是0到255?从这个意义上说,我猜猜字符号默认情况下应该是无符号的,只有当我们打算将它视为'数字'时我们必须添加'signed'关键字.因此,当我使用文本文件时,我应该使用unsigned char吗?

另外,我不明白为什么要std::ofstream使用读写函数,char而不是unsigned char在需要使用二进制文件时.在那里我不关心签名,是吗?此外,我已经成功使用了signed char这样一个JPEG文件的副本:

//..open all streams..
char c;
while(input.peek()!=EOF){
    input.read(&c,1);   //std::ifstream input;
    output.write(&c,1); //std::ofstream output;
} 
//..close all streams..
Run Code Online (Sandbox Code Playgroud)

因为它工作,我认为read读取unsigned bytes(在图像处理中unsigned char是常用的)并设置,c以便该值在2的补码中有一些偶然的符号解释.我需要创建一个值的直方图,但我得到一个运行时错误,因为我使用signed char作为索引.uc = (unsigned char)c;?当对于unsigned char至少有一个简单的读/写重载时,我必须使用一些强制转换,这不是很愚蠢吗?

c++

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

根据标题中的文本设置JTable的列宽

我需要根据标题中的文本获得适当的表大小.它包含捷克名称的缩写,例如:"Po","Út","St",atc.但不显示这三个点.

我有这个代码:

width,height- 所有最小行/列大小的最大值
allWidth,allHeight- 应该是整个表的总宽度,高度

//GET DIMENSION
int width = 0;
int height = 0;
int allWidth, allHeight;
for (int col = 0; col < table.getColumnCount(); col++) {        
    TableColumn tableColumn = table.getTableHeader().getColumnModel().getColumn(col);
    TableCellRenderer renderer = tableColumn.getHeaderRenderer();
    if (renderer == null) {
        renderer = table.getTableHeader().getDefaultRenderer();
    }
    Component component = renderer.getTableCellRendererComponent(table,
            tableColumn.getHeaderValue(), false, false, -1, col);
    width = Math.max(component.getPreferredSize().width, width);
    table.getColumnModel().getColumn(col).setPreferredWidth(width);
}
allWidth = table.getColumnCount() * width;
for (int row = 0; row < table.getRowCount(); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jtableheader preferredsize

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

使用非const指针定义对const数据的指针的引用有什么问题?

int main()
{
    const int* x;
    int* pa = x;//removes const, so UB.

    const int*& pb = pa;//error
    int* pd = pb;//error
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道pointer to non-const data用a 定义a 是不可能的pointer to const data,因为它会自动取消constness,允许我修改值.
但是第二次初始化有什么问题?我知道引用是某个东西的别名以及它是如何工作的,但仍然没有得到实际发生的事情.我想第二个错误的解释将有希望启发我第三个错误.
任何人都能解释一下吗?谢谢!

c++ pointers reference

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