小编Pie*_*ret的帖子

OpenCV + Android + Unity

我正在寻找一种在Unity项目中使用OpenCV的方法,而我的目标平台是Android设备.

我知道有些资产存在于统一资产仓库,但我不要想,因为我觉得他们太昂贵,使用它们.

通过使用教程在dll中预编译OpenCV,我设法使用Unity中的opencv作为C++本机插件,但dll意味着Windows桌面,因此它对我构建Android项目没有多大帮助.

我还发现了opencv jar存档,我知道它们可以很容易地导入Unity,但我不知道如何进行下一步:那就是如何从Unity C#脚本访问OpenCV.

因此,如果有人知道如何在Unity编辑器中使用OpenCV配置虚拟hello world项目以构建到Android,或者甚至有提示,我会接受任何关于此的信息.

提前致谢.

PS:我知道这个问题有些模糊,并且相信我这不是一个LMGFY问题,因为谷歌有很多这样的问题,没有真正的答案,所以请不要急于-1投票.

UPDATE

使用教程,我设法使用Android studio为Android构建opencv,但我仍然不知道如何使用C#脚本编写OpenCV.例如,如何创建一个cv :: Mat?

所以我设法做了:

  • 构建OpenCV并使用Android studio运行一些本机代码(因此来自Java).
  • 构建Unity本机示例(单个C函数)并从C#脚本调用它.

但我仍然无法弄清楚如何使用OpenCV依赖项构建一些C++代码并从C#脚本调用此代码.

c# android opencv unity-game-engine unity5

9
推荐指数
2
解决办法
5957
查看次数

Visual Studio 自动完成 C++ 的 Doxygen 标签

有没有办法让 Visual Studio 自动将 doxygen 标签放置在 C++ 源文件中?

我的意思是例如这段代码:

int foo(bool p);
Run Code Online (Sandbox Code Playgroud)

如果我///在上面输入,Visual Studio 会自动生成以下几行:

/// <summary>
/// 
/// </summary>
/// <param name="p"></param>
/// <returns></returns>
int foo(bool p);
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否可以对 doxygen 做同样的事情(当我输入时/**)?要使 VS 生成以下内容:

   /**
    * @brief
    * @param p
    * @return
    */
    int foo(bool p)
Run Code Online (Sandbox Code Playgroud)

我的问题是关于编写文档标签(不生成最终的 doxygen)。

c++ doxygen visual-studio

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

何时使用 C++ 模块?

这个问题可能太宽泛了,但最近确实让我很高兴:

我最近发现了现代 C++ 中的模块: https://en.cppreference.com/w/cpp/language/modules

但我真的不明白他们的目的以及何时使用它而不是命名空间或只是库头?

在提供的示例中,他们现在使用import <iostream>;代替include <iostream>;,使用其中一种与另一种有什么区别?哪一个是首选?

他们说“模块与名称空间正交”?这是什么意思?

关于开发的指导方针是什么,我们现在应该避免标题和东西吗?

例如:

你好世界.cpp

export module helloworld; // module declaration
 
import <iostream>;        // import declaration
 
export void hello()       // export declaration
{
    std::cout << "Hello world!\n";
}
Run Code Online (Sandbox Code Playgroud)

主程序

import helloworld; // import declaration
 
int main()
{
    hello();
}
Run Code Online (Sandbox Code Playgroud)

相对

helloworld.h / helloworld.cpp

include <iostream>;

namespace ns
{
    void hello();
}


#include "helloworld.h";

void ns::hello()
{
    std::cout << "Hello world!\n";
}
Run Code Online (Sandbox Code Playgroud)

主程序

#include "helloworld.h";
 
int main()
{ …
Run Code Online (Sandbox Code Playgroud)

c++ c++20 c++-modules

5
推荐指数
0
解决办法
1370
查看次数

在 Windows 上编译错误 C2131 和 C3863,但在 Linux 上则不然

我有一段代码可以在 Linux (Raspbian) 上编译并正常工作,但不能在 Windows (VS 17) 上编译。

\n\n

我使用 CMAKE 3 进行跨平台编译,就像我说的,我在 Linux 上构建它没有问题。

\n\n

以下是我使用的唯一 CMAKE 选项:

\n\n
cmake_minimum_required(VERSION 3.1)\nproject(Track)\nset (CMAKE_CXX_STANDARD 11)\n...\n// The rest of the CMakeLists.txt has nothing fancy\n
Run Code Online (Sandbox Code Playgroud)\n\n

但在Windows下(使用VS 17本机编译器),有一段代码甚至无法构建,我不明白为什么。我得到的错误是(抱歉,它是法语,但我认为很容易理解):

\n\n
error C2131: l'expression n'a pas \xc3\xa9t\xc3\xa9 \xc3\xa9valu\xc3\xa9e en constante    \nnote: \xc3\xa9chec en raison de l'appel d'une fonction ind\xc3\xa9finie ou 'constexpr' non d\xc3\xa9clar\xc3\xa9e\nnote: voir l'utilisation de 'std::vector<ROI,std::allocator<_Ty>>::size'\nerror C3863: le type de tableau 'float ['fonction'+]['fonction'+]' n'est pas attribuable\n
Run Code Online (Sandbox Code Playgroud)\n\n

以及导致错误的(简化的)代码:

\n\n
// Defined somewhere else\nclass ROI\n{\n}\n\nclass …
Run Code Online (Sandbox Code Playgroud)

c++ cmake

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

优化的图像卷积算法

我正在用 C++实现图像卷积,我已经有了一个基于给定伪代码的简单的工作代码:

for each image row in input image:
   for each pixel in image row:

      set accumulator to zero

      for each kernel row in kernel:
         for each element in kernel row:

            if element position  corresponding* to pixel position then
               multiply element value  corresponding* to pixel value
               add result to accumulator
            endif

      set output image pixel to accumulator
Run Code Online (Sandbox Code Playgroud)

由于这可能是大图像和内核的一大瓶颈,我想知道是否有其他方法可以使事情更快?即使有额外的输入信息,如:稀疏图像或内核、已知内核等......

我知道这可以并行化,但在我的情况下这是不可行的。

c++ algorithm math image-processing convolution

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