小编Gil*_*lad的帖子

openCV 3.0.0 cv :: vector缺失

我正在升级opencv 2.4.113.0.0cv::vector在我的代码中使用 <br>但现在我得到的错误向量不是'cv'的成员

我会开始使用std::vector而不是<br> 我找不到它被删除或只是移动到另一个头文件?

c++ opencv opencv3.0

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

Kullback-Leibler(KL)直方图之间的距离 - matlab

function [ d ] = hcompare_KL( h1,h2 )
%This routine evaluates the Kullback-Leibler (KL) distance between histograms. 
%             Input:      h1, h2 - histograms
%             Output:    d – the distance between the histograms.
%             Method:    KL is defined as: 
%             Note, KL is not symmetric, so compute both sides.
%             Take care not to divide by zero or log zero: disregard entries of the sum      for which with H2(i) == 0.

temp = sum(h1 .* log(h1 ./ h2));
temp( isinf(temp) ) …
Run Code Online (Sandbox Code Playgroud)

matlab image-processing

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

可以在Macros中过度使用会损害性能吗?

我有一个非常长的代码,这被称为数百万的时间,我注意到如果我将所有宏更改为内联函数,代码运行速度要快得多.

你能解释一下这是为什么吗?宏不是文本替换吗?与可以调用函数的内联函数相反?

c c++ performance

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

MATLAB与C++对比OpenCV - imresize

我有以下MATLAB代码,我想传输到C++

假设Gr是2d矩阵和1/newscale == 0.5

Gr = imresize(Gr, 1 / newScale);
Run Code Online (Sandbox Code Playgroud)

MATLAB文档中:

B = imresize(A,scale)返回图像B,其是尺寸乘以A的尺寸.输入图像A可以是灰度,RGB或二值图像.如果scale在0和1.0之间,则B小于A.如果scale大于1.0,则B大于A.

所以这意味着我将得到一个2D矩阵== matrix_width/2和matrix_height/2
如何计算这些值?根据文档的默认值来自最接近的4X4的三次插值.

我找不到C++的示例代码.你能提供这些代码的链接吗?

我也发现了这个OpenCV函数resize.

它和MATLAB一样吗?

c++ matlab interpolation opencv image-processing

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

imresize - 试图理解双三次插值

我正在尝试理解这个功能:

function [weights, indices] = contributions(in_length, out_length, ...
                                            scale, kernel, ...
                                            kernel_width, antialiasing)


if (scale < 1) && (antialiasing)
    % Use a modified kernel to simultaneously interpolate and
    % antialias.
    h = @(x) scale * kernel(scale * x);
    kernel_width = kernel_width / scale;
else
    % No antialiasing; use unmodified kernel.
    h = kernel;
end
Run Code Online (Sandbox Code Playgroud)

我真的不明白这条线是什么意思

 h = @(x) scale * kernel(scale * x);
Run Code Online (Sandbox Code Playgroud)

我的规模是0.5
内核是立方的.

但除此之外是什么意思?我认为这就像创建一个稍后会调用的函数?

matlab interpolation image-processing

5
推荐指数
2
解决办法
8346
查看次数

openCV cv::mat 发布

使用 openCV cv::Mat 时。 http://docs.opencv.org/modules/core/doc/basic_structures.html 我知道正在使用某种智能指针。我的问题是,为了做一些内存优化。
我应该调用 cv::Mat release() 以释放未使用的矩阵吗?
还是我应该相信编译器来做?

例如,想想这段代码:

cv::Mat filterContours = cv::Mat::zeros(bwImg.size(),CV_8UC3);  
bwImg.release();
for (int i = 0; i < goodContours.size(); i++)
{
    cv::RNG rng(12345);
    cv::Scalar color = cv::Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
    cv::drawContours(filterContours,goodContours,i,color,CV_FILLED);        
}

/*% Fill any holes in the objects
bwImgLabeled = imfill(bwImgLabeled,'holes');*/


imageData = filterContours;
filterContours.release(); //should I call this line or not ?
Run Code Online (Sandbox Code Playgroud)

c++ opencv

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

如何在wpf中更改应用程序文化?

这是我的代码.

double value = double.Parse(Utility.GetParamValueOrDefault(omRecord.paramList[i].value, "0"),CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误 FormatException:输入字符串格式不正确

我已经阅读了StackOverFlow的一些线程,说我需要将以下代码添加到我的WPF应用程序的main()中.

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的错误,我的CurrentCulture仍然不是en-US.

c# wpf cultureinfo

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

C / C ++中的快速7x7 2D中值滤波器

我正在尝试将以下代码从Matlab转换为C ++

function data = process(data)
    data = medfilt2(data, [7 7], 'symmetric');
    mask = fspecial('gaussian', [35 35], 12);
    data = imfilter(data, mask, 'replicate', 'same');
    maximum = max(data(:));
    data = 1 ./ ( data/maximum );
    data(data > 10) = 16;
end
Run Code Online (Sandbox Code Playgroud)

我在medfilt2中遇到的问题-这是一个2D中值滤波器,我需要它支持每像素10位和更多图像。

1.我研究过openCV,它有一个5x5的中值过滤器,它支持16位,但是7x7仅支持字节。

http://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html?highlight=medianblur#medianblur

2.我也正在研究英特尔IPP,但我只能看到一维中值过滤器 https://software.intel.com/zh-cn/node/502283

二维滤波器有快速实现吗?
寻找类似的东西:

  1. 快速中值搜索:使用并行编程和向量化(AVX / SSE)操作的ANSI C实现 ...
  2. 二维数字信号处理II。变换和中值滤波器。由TSHuang编辑。施普林格出版社。1981年。

C / C ++ / C#/ VB.NET / Delphi中的带实现的快速中位数过滤有更多代码示例。

我还发现了“恒定时间中值过滤”

c c++ opencv image-processing simd

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

C++ C4834 错误从 VS2017 移动到 VS2019

我收到此警告,直到现在我没有收到任何警告:

错误 C2220:以下警告被视为错误
警告 C4834:丢弃具有“nodiscard”属性的函数的返回值

template <typename T>
static void quick_hull(std::vector<T> &points)
{
    points = hull(points);
    // Remove successive duplicates
    std::unique(begin(points), end(points), [](const T &a, const T &b) { return (a.x == b.x) && (a.y == b.y); });
} 
 
Run Code Online (Sandbox Code Playgroud)

你能解释一下为什么会这样吗?

c++

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

wix 生成新的升级代码

我的项目需要能够同时安装 2 个或更多版本。据我所知,我找到的解决方案是更改安装程序每个版本的升级代码。

但是我想自动执行此操作。在常规 GUID 中,我只使用“*”,但这不适用于升级代码。有没有办法在每个 wix 预构建或任何其他解决方案中生成新的升级代码?

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
  <Bundle Name="Prog" Version="1.2.1.16" Manufacturer="Gilad Corporation" UpgradeCode="{7E71F945-BA46-4872-A6B2-AF992FFDF2D0}">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
      <bal:WixStandardBootstrapperApplication LicenseFile="..\SetupProject\Gilad.rtf" />
    </BootstrapperApplicationRef>
    <Chain>
      <!-- TODO: Define the list of chained packages. -->
      <PackageGroupRef Id="Netfx45FullPackage" />
    </Chain>
  </Bundle>
Run Code Online (Sandbox Code Playgroud)

wix wix3.5 wix3.6 wix3.7

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