小编her*_*tao的帖子

使用"const cv :: Mat&","cv :: Mat&","cv :: Mat"或"const cv :: Mat"作为函数参数的区别?

我彻底搜查过,并没有找到一个直截了当的答案.

将opencv matrices(cv::Mat)作为函数的参数传递,我们传递一个智能指针.我们对函数内部的输入矩阵所做的任何更改也会改变函数范围之外的矩阵.

我通过传递一个矩阵作为const引用来读取它,它不会在函数内被改变.但是一个简单的例子表明它确实:

void sillyFunc(const cv::Mat& Input, cv::Mat& Output){
    Output = Input;
    Output += 1;
}

int main( int argc, char** argv ){
    cv::Mat A = cv::Mat::ones(3,3,CV_8U);
    std::cout<<"A = \n"<<A<<"\n\n";
    cv::Mat B;
    sillyFunc(A,B);
    std::cout<<"A = \n"<<A<<"\n\n";
    std::cout<<"B = \n"<<B<<"\n\n";
}
Run Code Online (Sandbox Code Playgroud)

很明显,A即使它是作为一个发送,也会被改变const cv::Mat&.

这并不让我感到惊讶,因为在函数内部I2是一个简单I1的智能指针副本,因此任何改变I2都会改变I1.

什么是难不倒我的是,我不明白发送之间存在什么实际区别cv::Mat,const cv::Mat,const cv::Mat&cv::Mat&作为参数的函数.

我知道如何覆盖这个(替换Output = Input;Output = Input.clone();将解决问题)但仍然不明白上述差异.

多谢你们!

c++ parameters opencv function matrix

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

使用c ++ 11 stoi,stof和family,boost :: lexical_cast是多余的吗?

boost::lexical_cast现在的冗余度,C++ 11引入stoi,stof和家人,或者是没有任何理由仍然使用它?(除了没有C++ 11编译器)它们是否提供完全相同的功能?

c++ boost stl std c++11

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

什么是C++中的"<?="运算符?

我在这里遇到了以下代码,它来自使用邻接矩阵的Dijkstra算法的C++实现.

//read in edges keeping only the minimum
for(int i=0; i<E; i++) {
    int v1,v2,tmp;
    fin >> v1; fin >> v2;
    fin >> tmp;
    adjmat[v1][v2]<?=tmp; // <?= sets left to min(left,right)
    adjmat[v2][v1]<?=tmp;
}
Run Code Online (Sandbox Code Playgroud)

注意最后两行,它们适用于操作符<?=.正如评论所述,以下行

adjmat[v1][v2]<?=tmp; // <?= sets left to min(left,right)

将设置leftmin(left,right).

我以前从未见过这个操作员.我试过VS中的代码,它无法编译.它是什么?它怎么能left成为min(left,right)

c++ operators min operator-keyword

23
推荐指数
2
解决办法
918
查看次数

OpenCV 3.x只包含​​一个lib - opencv_world.lib?

我正在尝试将我的OpenCV版本从2.4.9更新到最新版本3.10.我从这里下载了Windows二进制文件,从官方OpenCV站点导航到那里.然后我运行了安装程序,但该opencv\build\x64\vc12\lib目录只包含几个文件:

  • opencv_world310.lib
  • opencv_world310d.lib
  • OpenCVConfig.cmake
  • OpenCVModules.cmake
  • OpenCVModules-debug.cmake
  • OpenCVModules-release.cmake

在过去的版本中,此目录用于包含所需的库,如opencv_calib3d249d.lib,opencv_contrib249d.lib,opencv_core249d.lib等.

我想有一些我需要用CMake做的事情,但我似乎无法弄清楚 - 旧的二进制文件用于为你编译一切.我也在文档中找不到任何解释这个的东西.最近有没有其他人遇到这个并有解决方案?

c++ opencv cmake opencv3.0

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

在C++中处理大数字?

在C++中处理大型数字输入的最佳方法是什么(例如10^100)?

对于算法,我通常切换到ruby,有时我会使用字符串.

还有其他好方法吗?

c++ largenumber biginteger

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

如何将OpenCV Mat的所有像素设置为特定值?

我有一个类型的图像CV_8UC1.如何将所有像素值设置为特定值?

c++ opencv matrix

19
推荐指数
3
解决办法
5万
查看次数

如何获取当前ItemsControl项的索引?

有没有办法获取当前ItemsControl项目的索引WPF

例如,我想做类似的事情:

<ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBox Text="{Binding current_index}">
            </TextBox>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

所以在此之后,第一个TextBox将显示文本"0",第二个"1",第三个"2" ....

c# data-binding wpf itemscontrol

18
推荐指数
3
解决办法
3万
查看次数

关于输入参数的顺序

对于函数/方法包含许多输入参数,如果以不同的顺序传入它会有所不同吗?如果是,在哪些方面(可读性,效率......)?我更好奇我应该如何为自己的功能/方法做些什么?

在我看来,这:

  1. 通过引用/指针传递的参数通常在通过值传递的参数之前.例如:

    void* memset( void* dest, int ch, std::size_t count ); 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 目标参数通常在源参数之前.例如:

    void* memcpy( void* dest, const void* src, std::size_t count );
    
    Run Code Online (Sandbox Code Playgroud)
  3. 除了一些硬约束之外,即具有默认值的参数必须是最后的.例如:

    size_type find( const basic_string& str, size_type pos = 0 ) const;
    
    Run Code Online (Sandbox Code Playgroud)
  4. 无论他们传递的是什么顺序,它们都是功能等同的(实现相同的目标).

c c++ performance code-readability input-parameters

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

Blogger SyntaxHighlighter根本不起作用

我一直试图在Blogger上安装SyntaxHighlighter 3.0.83几个小时.我已经尝试了很多教程,但它仍然无效.我的意思是它看起来像正常文本插入nto pre标签.

我创建了一个新博客并粘贴:

<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css'     rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js'     type='text/javascript'></script>
<script language="javascript" type="text/javascript">
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
</script>
Run Code Online (Sandbox Code Playgroud)

......就在关闭头标签之前.上面粘贴的代码在这里生成:generator

奇怪的是它适用于我自己的html文档.举个例子:

<html>
<head>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'></script>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'></script>
<script language="javascript" type="text/javascript">
    SyntaxHighlighter.config.bloggerMode = true;
    SyntaxHighlighter.all();
</script>
</head>
<body>
<pre class='brush:java;'>import gt.memorize;
public class Test
{
    private static final String test = "test";
}</pre>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

但是相同的预标记对博客不起作用.

我也尝试过粘贴

<script language="javascript" type="text/javascript">
    SyntaxHighlighter.config.bloggerMode = true; …
Run Code Online (Sandbox Code Playgroud)

blogger syntaxhighlighter blogger-dynamic-views

16
推荐指数
2
解决办法
4081
查看次数

识别opencv的开放和封闭形状

如何在opencv中检测打开和关闭的形状.

在此输入图像描述

这些是我想要检测的简单样本形状.我已经检测到矩形使用findContoursapproxPolyDP检查矢量之间的角度.

现在我想检测打开的形状,approxPolyDP函数有关闭形状设置为true的bool,并且还检查isCounterConvex返回的点数,加上contourArea限制.

任何想法我应该如何继续检测这些图像.

c++ opencv image-processing shape-recognition

16
推荐指数
3
解决办法
2万
查看次数