小编man*_*tta的帖子

#define函数参数c ++

我在一个公共接口中调用了一组函数,并将这些函数指针存储在一个公共容器中,所以我有

typedef void(*CommandFunction)(const InputArgsMap &, const ArgumentMap *);
Run Code Online (Sandbox Code Playgroud)

有了这个说,如果没有复制粘贴参数列表,声明这种类型的函数的最佳方法是什么?我想通过a实现这个#define,但还有其他(更好的,oop)方式吗?

例如,是否可以做类似的事情

#define CMD_ARGS (const InputArgsMap &, const ArgumentMap *)
void _fcn_1(CMD_ARGS);
void _fnc_2(CMD_ARGS);
Run Code Online (Sandbox Code Playgroud)

c++

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

构建PCL:pcl_kdtree'.serialize的左边必须有class/struct/union'

我正在使用VisualStudio 2013为Windows 7编译PCL,我遇到错误include/flann/util/serialization.h:

error C2228: left of '.serialize' must have class/struct/union  D:\Libs\PCL\flann\include\flann\util\serialization.h    18  1   pcl_kdtree
Run Code Online (Sandbox Code Playgroud)

Serializing包含有关FLANN库的char*的结构中存在类似错误 .

我正在使用PCL的git,Boost 1.57,flann 1.8.1,Visual Studio 2013 x64的头版本.

这有什么问题?

c++ boost point-cloud-library

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

内核大小 > 7 的 Canny 边缘检测器

为什么不能在内核大小大于 7 的 OpenCV 中执行 Canny 边缘检测?

例如,

// This works
cv::Canny(src_image, out_edges, th1, 2 * th1, 3);
cv::Canny(src_image, out_edges, th1, 2 * th1, 7);

// This raises an exception
cv::Canny(src_image, out_edges, th1, 2 * th1, 9);
Run Code Online (Sandbox Code Playgroud)

我知道 Sobel 只采用 1、3、5 或 7 的内核大小。但我见过使用内核大小为 9 的论文。这在 OpenCV 中是不可能的吗?

* 编辑 *

我一直在编辑 Canny 代码以支持更大的内核。问题出在这里(canny.cpp):

if (L2gradient)
{
  low_thresh = std::min(32767.0, low_thresh);
  high_thresh = std::min(32767.0, high_thresh);
  if (low_thresh > 0) low_thresh *= low_thresh;
  if (high_thresh > 0) high_thresh *= high_thresh;
} …
Run Code Online (Sandbox Code Playgroud)

c++ opencv edge-detection

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

OpenCV:设置图像边框,没有填充

如何将给定大小的图像边框设置为黑色,没有填充,即,我只想将图像边框设置为黑色(零),输出将是与源尺寸相同的图像.

c++ opencv

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

从缓冲区创建QImage,没有深层拷贝?

在Qt中,如何QImage从字节数组('uint8_t*`)构造一个对象,而不创建一个深拷贝,只是引用我的数据数组?

c++ qt

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

使用OpenGL渲染位数组

我有一个位数字表示一个图像掩码,存储在uint8_t[]容器数组中,按行排序.因此,对于每个字节,我有8个像素.

现在,我需要使用OpenGL(> = 3.0)进行渲染.将正位绘制为白色像素,将负位绘制为黑色像素.

我怎么能这样做?请

想到的第一个想法是为此开发一个特定的着色器.任何人都可以给出一些提示吗?

c++ arrays opengl

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

MFC打开大文档

我有一个单文档界面(SDI)Microsoft基础类(MFC)应用程序,必须加载一个大文档文件(大约需要2分钟).出于这个原因,我打开文档时,我的应用程序仍然没有响应.

但是,我希望我的应用程序在打开文档时能够快速响应.问题是,如果我尝试在线程上加载我的文档,我的OnopenDocument函数(在我的doc中)将在我实际打开文档之前返回:

BOOL CmodguiDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
  if (!CDocument::OnOpenDocument(lpszPathName))
    return FALSE;
  start_tread(_open_doc); // just an example
  return TRUE; // Will return before the document will actually be open
}
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做非锁定但只在文件实际打开后返回?或者我如何在加载文档时至少使我的应用程序响应?

谢谢

c++ mfc

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

cv ::来自外部原始指针数据的mat,释放自身

有没有办法创建一个cv::Mat从外部数据指针,但使该对象负责删除数据?

即,我有一个cv::Matvoid *指针创建一个函数,

cv::Mat createMat() {

  void *data = (...);

  cv::Mat data_m(rows, cols, CV_8UC1, data);
  return data_m;
}
Run Code Online (Sandbox Code Playgroud)

我希望我的回归cv::Mat负责发布数据.我怎样才能做到这一点?

c++ opencv

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

带有模板布尔参数的函数:保证被优化?

在下面的模板化函数示例中,是否保证循环if内部的中心for得以优化,仅保留所使用的指令?

如果不能保证优化(在GCC 4,MSVC 2013和llvm 8.0中),最多使用C ++ 11的替代方法是什么?

请注意,此功能没有任何用处,我知道可以通过多种方式对这一特定功能进行优化等等。但是我只想关注bool模板参数在生成代码中的工作方式。

template <bool IsMin>
float IterateOverArray(float* vals, int arraySize) {

    float ret = (IsMin ? std::numeric_limits<float>::max() : -std::numeric_limits<float>::max());

    for (int x = 0; x < arraySize; x++) {
        // Is this code optimized by the compiler to skip the unnecessary if?
        if (isMin) {
            if (ret > vals[x]) ret = vals[x];
        } else {
            if (ret < vals[x]) ret = vals[x];
        }
    }

    return val;

}
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

MFC如何更改通知文档(并显示*)

我习惯,当我在Microsoft Word中更改文档时,它获得了*接近文件名的文件,应用程序自动知道我应该保存文档.

如何在MFC中复制此行为并通知我的Document类这些更改,以便应用程序自动知道文档需要保存?

c++ mfc

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

标签 统计

c++ ×10

opencv ×3

mfc ×2

arrays ×1

boost ×1

edge-detection ×1

opengl ×1

point-cloud-library ×1

qt ×1

templates ×1