小编TSL*_*SL_的帖子

使用2D数组初始化OpenCV Mat

在我的应用程序中,我想创建一个具有一些值的OpenCV Mat A(2-Dimensions),然后使用A作为输入将其传递给另一个OpenCV函数.

目前,我正在尝试:

// float data[2][5] = {{1,2,3,4,5},{7,8,9,10,11}}; 
// OR
float data[10] = {1,2,3,4,5,7,8,9,10,11};

// and then
//  A = Mat(1, 5, CV_32FC1, &data, 2);   // init from float 1D - array
// OR 
    A = Mat(2, 5, CV_32FC1, &data, 2);  
Run Code Online (Sandbox Code Playgroud)

在1D数组的情况下,传递的值是OK.但这对2D阵列不起作用,这更常见.我怎样才能在OpenCV中解决这个问题?

opencv

26
推荐指数
4
解决办法
8万
查看次数

以编程方式进行Qt GUI设计

我正在尝试创建一个GUI应用程序.

主窗口a QMainWindow包含9个固定大小的标签以及主窗口的大小.

我尝试在没有Qt GUI Designer的情况下以编程方式进行编程.该项目构建没有错误,但我看不到主窗口上显示的任何标签或布局.它只是空白.

这是我的源代码:

WCwindow::WCwindow()
{
   // initialize widgets with text
   CAM111 = new QLabel("CAM 01");
   CAM121 = new QLabel("CAM 02");
   CAM131 = new QLabel("CAM 03");

   CAM211 = new QLabel("CAM 04");
   CAM221 = new QLabel("CAM 05");
   CAM231 = new QLabel("CAM 06");

   CAM311 = new QLabel("CAM 07");
   CAM321 = new QLabel("CAM 08");
   CAM331 = new QLabel("CAM 09");

   CAM111->setFixedSize(wcW,wcH);
   CAM121->setFixedSize(wcW,wcH);
   CAM131->setFixedSize(wcW,wcH);
   CAM211->setFixedSize(wcW,wcH);
   CAM221->setFixedSize(wcW,wcH);
   CAM231->setFixedSize(wcW,wcH);
   CAM311->setFixedSize(wcW,wcH);
   CAM321->setFixedSize(wcW,wcH);
   CAM331->setFixedSize(wcW,wcH);

   QGridLayout *layout = new QGridLayout;
   layout->addWidget(CAM111,0,0);
   layout->addWidget(CAM121,0,1);
   layout->addWidget(CAM131,0,2);

   layout->addWidget(CAM211,1,0);
   layout->addWidget(CAM221,1,1);
   layout->addWidget(CAM231,1,2); …
Run Code Online (Sandbox Code Playgroud)

user-interface qt

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

访问OpenCV中多维Mat的子矩阵

根据这篇 文章和OpenCV文档,我可以初始化和访问多维Mat的每个元素.

实际上,我首先在MATLAB中编码,现在需要转换为OpenCV.MATLAB矩阵支持子矩阵访问,如:a(:,:,3)或b(:,:,3:5)

这可以在OpenCV中完成吗?据我所知,这可以用2D Mat完成.那个2D怎么样?

Edit01:此外,对于多维Mat,属性cols和行不足以表征矩阵的3种大小.有些尺寸大于3的情况.如何存储这些属性?

Edit02:

// create a 100x100x100 8-bit array
int sz[] = {100, 100, 100};
Mat bigCube(3, sz, CV_8U, Scalar::all(0));
Run Code Online (Sandbox Code Playgroud)

我放弃了使用OpenCV Mat进行子矩阵访问的想法.也许,它在OpenCV中不受支持.但是从这个示例代码中,构造函数从'sz'接收第三维.Mat第三维的哪个属性被传递给?可能在这种情况下,行= 100,cols = 100,另一个?? = 100我丢失了OPenCV文档

Edit03:从OpenCV源跟踪Mat类我从mat.hpp找到了Edit02中构造函数的定义:

inline Mat::Mat(int _dims, const int* _sz, int _type, const Scalar& _s)
    : flags(0), dims(0), rows(0), cols(0), data(0), refcount(0),
    datastart(0), dataend(0), datalimit(0), allocator(0), size(&rows)
{
    create(_dims, _sz, _type);
    *this = _s;
}  
Run Code Online (Sandbox Code Playgroud)

接下来的问题是定义"创建"功能的位置和方式?=>在OpenCV中跟踪这个Mat定义可能有助于我在Mat矩阵中修改/自定义我自己的特性

PS:不好意思,如果我的帖子太乱了!我是一个novic程序员,试图解决我的编程问题.如果我的方法不好或不够正确,Plz可以随意纠正我.谢谢!!

matlab opencv matrix

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

使用OpenCv检测PC上的网络摄像头/摄像头数量

我正在制作运行多个网络摄像头/摄像头的应用程序.我无法通过OpenCV来检测我拥有的网络摄像头数量,以便在其中放置一个带有多个子网络摄像头的大显示窗口.

有人可以帮帮我吗?

我搜索过openCV willowgarage但是失败了

谢谢

opencv

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

OpenCV 2.3中的Mat(逻辑)运算符'> ='

我从OpenCV 2.3,distrans.cpp运行一个演示代码,有一行代码我几乎找不到它的含义:

Mat edge = gray >= edgeThresh, dist, labels, dist8u;
Run Code Online (Sandbox Code Playgroud)

它被用作阈值操作,但我不知道它是如何工作的,甚至不是命名和谷歌它.

谢谢

opencv

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

OpenCV中CV_32FC3和CV_64FC3之间的区别?

我正在测试OpenCV矩阵和显示功能,并有这个错误.我花了半天多的时间来揭示它:

我最初尝试显示OpenCV矩阵而不管基质的类型,例如CvMat或Mat,......使用由另一个帖子的Vasile先生推荐的显示方法多通道垫显示功能

显示方法简单地将矩阵的所有数据提取到cout流

这是我的计划:

// First: CV_32FC3 works OK

float objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};
CvMat objptsmat = cvMat( 1, 4, CV_32FC3, objpts);  
CvMat* objectPoints = &objptsmat;
CvMatShow(objectPoints);
getchar();
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

// Second: CV_64FC3 crashes

float objpts[12] = {0, 105, 105, 0, 0, 0, 105, 105, 0, 0, 0, 0};
CvMat objptsmat = cvMat( 1, 4, CV_64FC3, objpts);  
CvMat* objectPoints = &objptsmat;
CvMatShow(objectPoints);
getchar();
Run Code Online (Sandbox Code Playgroud)

输出: 在此输入图像描述

他们应该是一样的.对??!!

debugging opencv matrix

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

在 C++ 中使用 typedef 提高类型安全性

我想重温一下这个帖子。目前,我正在尝试避免在程序中混合角度的 Rad 和 Degree 类型而产生的错误。

例如:

  typedef float Degree;
  typedef float Radian;

  Degree a = 15.;

  Radian b = 3.14/4.;

  float c = a + b;  // no compile error
Run Code Online (Sandbox Code Playgroud)

有新的更新解决方案吗?

编辑01:

我求助于编写自己的类,希望它的尺寸​​小并且没有依赖性。这是工作代码

#include <stdio.h>
#include <iostream>

template<typename numT>
class RadAngle {
public:
    RadAngle() {
      AngVal = 0.0;
    }
    RadAngle(const numT& angV) {
      AngVal = angV;
    }
    void operator = (const RadAngle<numT>& ang1) {
      AngVal = ang1.getVal();
    }
    RadAngle operator+(const RadAngle<numT>& ang1) const { return RadAngle<numT>(AngVal+ang1.getVal()); }
    RadAngle …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

在函数中传递参数 - OpenCV&Cpp

我已经有一段时间来回这个问题,特别是因为我开始使用OpenCV库.事实是,在OpenCV中,使用了几种方法:

  • 1st:funcA((const)CvMat arg)
  • 第二名:funcA((const)CvMat&arg)
  • 第3名:funcA((const)CvMat*arg)
  • 第四名:funcA((const)CvMat*&arg)=>我刚看到并且目前被困在这

当然,对应于每种方法,调用者格式和功能实现应该是不同的.

所有这些衍生物有什么意义?特别是最后一个(我还没有理解它的用法)

c++ opencv argument-passing

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

使用boost :: filesystem以递归方式列出目录文件

由于类recursive_directory_iterator(我不必编写递归代码),我正在使用new boost,v1.5.3来执行此任务,如下所示:

void ListDirRec(const char *Dir, vector<string>& DirFileList, const char* ext)
{    
recursive_directory_iterator rdi(Dir);  
recursive_directory_iterator end_rdi;

DirFileList.empty();

string ext_str0(ext);   
for (; rdi != end_rdi; rdi++)
{
    rdi++;
    //cout << (*di).path().string() << endl;
    cout << (*rdi).path().string() << endl;

    //cout << " <----- " << (*rdi).path().extension() << endl;

    //string ext_str1 = (*rdi).path().extension().string();
    if (ext_str0.compare((*rdi).path().extension().string()) == 0)
    {
        DirFileList.push_back((*rdi).path().string());
    }
}
Run Code Online (Sandbox Code Playgroud)

具有特定扩展名的功能列表文件.此函数适用于案例,但经常返回"断言失败错误",如:

**** Internal program error - .... assertion (m_imp.get()) ... operations.hpp(952): dereference of end recursive_directory_iterator
Run Code Online (Sandbox Code Playgroud)

我几乎找不到这个错误的原因.可以尝试..抓住帮助吗?提前感谢您的帮助

c++ boost runtime-error boost-filesystem

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

使用 Clipper 库 - Angus Johnson =&gt; 无法运行代码片段

我正在尝试使用 Clipper 库来扩展我的避障机器人控制任务中的障碍物图像。但是现在,我什至坚持使用库的示例代码:

(http://www.angusj.com/delphi/clipper.php#code)

包括“clipper.hpp”

//from clipper.hpp ...
//typedef signed long long long64;
//struct IntPoint {long64 X; long64 Y;};
//typedef std::vector<IntPoint> Polygon;
//typedef std::vector<Polygon> Polygons;
...
using namespace ClipperLib;

Polygons subj(2), clip(1), solution;

subj[0].push_back(IntPoint(180,200));
subj[0].push_back(IntPoint(260,200));
subj[0].push_back(IntPoint(260,150));
subj[0].push_back(IntPoint(180,150));

subj[1].push_back(IntPoint(215,160));
subj[1].push_back(IntPoint(230,190));
subj[1].push_back(IntPoint(200,190));

clip[0].push_back(IntPoint(190,210));
clip[0].push_back(IntPoint(240,210));
clip[0].push_back(IntPoint(240,130));
clip[0].push_back(IntPoint(190,130));

DrawPolygons(subj, 0x160000FF, 0x600000FF);  // <- identifier not found
DrawPolygons(clip, 0x20FFFF00, 0x30FF0000);  // <- identifier not found

Clipper c;
c.AddPolygons(subject, ptSubject);
c.AddPolygons(clip, ptClip);
if (c.Execute(ctIntersection, solution)
  DrawPolygons(solution, 0x3000FF00, 0xFF006600);
Run Code Online (Sandbox Code Playgroud)

我想知道我是否缺少任何库安装?我知道这是一个小问题,我有点菜鸟,但任何帮助都可以减轻我的很多工作。谢谢!

polygon expansion

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