小编Dim*_*ima的帖子

你能举个缓冲区溢出的例子吗?

我听说过缓冲区溢出很多,并且相信我理解了这个问题,但我仍然没有看到一个说法的例子

char buffer[16];

//code that will over write that buffer and launch notepad.exe
Run Code Online (Sandbox Code Playgroud)

c c++ security buffer-overflow

6
推荐指数
3
解决办法
5240
查看次数

vector.resize函数在大小太大时破坏内存

发生的事情是我正在读取加密数据包,我遇到一个损坏的数据包,它会返回一个非常大的随机数.

size_t nLengthRemaining = packet.nLength - (packet.m_pSource->GetPosition() - packet.nDataOffset);

seckey.SecretValues.m_data.resize(nLengthRemaining);
Run Code Online (Sandbox Code Playgroud)

在这段代码中,m_data是一个std::vector<unsigned char>.nLengthRemaining由于数据包损坏而过大,因此抛出调整大小函数.问题不在于调整大小(我们处理异常),但调整大小已经损坏了内存,这会导致更多异常.

我想要做的是在调用resize之前知道长度是否太长,然后只有调用resize才可以.我已经尝试在调用resize之前放入此代码:

std::vector<unsigned char>::size_type nMaxSize = seckey.SecretValues.m_data.max_size();
if(seckey.SecretValues.m_data.size() + nLengthRemaining >=  nMaxSize) {
    throw IHPGP::PgpException("corrupted packet: length too big.");
}
seckey.SecretValues.m_data.resize(nLengthRemaining);
Run Code Online (Sandbox Code Playgroud)

此代码使用std :: vector max_size成员函数来测试nLengthRemaining是否更大.但这肯定不可靠,因为nLengthRemaining仍然小于nMaxSize,但显然仍然足以导致调整大小出现问题(nMaxSize为4xxxxxxxxx且nLengthRemaining为3xxxxxxxxx).

另外,我还没有确定调整大小的异常.它不是std :: length_error,它不是std :: bad_alloc.真正抛出的例外对我来说并不重要,但我很想知道.

顺便说一句,您知道,这段代码在正常情况下可以正常工作.这种损坏数据包的情况是它疯狂的唯一地方.请帮忙!谢谢.

更新:

@迈克尔.现在,如果数据包大于5 MB,我将忽略该数据包.我将与其他团队成员讨论可能验证数据包的问题(它可能已存在,我只是不知道它).我开始认为它确实是我们的STL版本中的一个错误,它抛出的异常甚至不是std :: exception,这让我很惊讶.我将尝试从我的主管那里找出我们正在运行的STL版本(我将如何检查?).

另一个更新:我只是证明它是我在Visual Studio 6开发机器上使用的STL版本中的一个错误.我写了这个示例应用程序:

// VectorMaxSize.cpp:定义控制台应用程序的入口点.//

#include "stdafx.h"
#include <vector>
#include <iostream>
#include <math.h>
#include <typeinfo>

typedef std::vector<unsigned char> vector_unsigned_char;

void fill(vector_unsigned_char& v) {
    for (int i=0; i<100; i++) v.push_back(i);
}


void …
Run Code Online (Sandbox Code Playgroud)

c++ stl resize vector

6
推荐指数
2
解决办法
9570
查看次数

从图像中裁剪椭圆

我想从图像中提取椭圆区域(图像中面部分的一部分),最好是在MATLAB中:

在此输入图像描述

例如,在此图像中,我想提取红色边界内的区域.
谁能帮我这个 ?

matlab image-processing computer-vision face-detection matlab-cvst

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

从目录加载所有图像

我在目录中有一些图像,我想加载所有这些图像进行一些处理.我尝试过使用这个load功能.

imagefiles = dir('F:\SIFT_Yantao\demo-data\*.jpg');      
nfiles = length(imagefiles);    % Number of files found
 for i=1:nfiles
 currentfilename=imagefiles(i).name;
 I2 = imread(currentfilename);
 [pathstr, name, ext] = fileparts(currentfilename);
 textfilename = [name '.mat'];
fulltxtfilename = [pathstr textfilename];
load(fulltxtfilename);
descr2 = des2;
frames2 = loc2;
do_match(I1, descr1, frames1, I2, descr2, frames2) ;
end
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,因为无法读取xyz.jpg没有找到这样的文件或目录,其中xyz是我在该目录中的第一个图像.
我还想从目录加载所有格式的图像,而不仅仅是jpg ......我怎么能这样做?

matlab image image-processing matlab-cvst

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

MATLAB中的BRISK和FREAK描述符

我正在使用MATLAB 2014a来提取BRISKFREAK描述符.我找不到任何将位串大小减小到128256的选项,它们都生成为512位.我认为FREAK不允许这种算法,但BRISK应该允许.有谁知道我是否可以减少BRISK描述符的维度?如果是,我该怎么办?

谢谢

matlab feature-extraction computer-vision freak matlab-cvst

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

关于C++中浅拷贝的问题

假设我有一个带有int指针成员变量"i"的结构"s".我在s的默认构造函数中为i分配内存.稍后在代码的其他部分中,我将一个s值的实例传递给某个函数.我在这里做一个浅色的副本吗?假设我没有为s实现任何复制构造函数或赋值运算符或任何东西......只是默认的构造函数.

c++ constructor memory-management

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

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

在Matlab中读取.ply文件

如何读取网格文件(.ply)并在Matlab中显示?

另外,如何更改上述型号的相机视点?

谢谢

3d matlab visualization mesh matlab-cvst

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

你如何从图像中剪出一张脸?

我已经获得了rgb频道的图像.我只想看到这些人的脸.我该怎么办?神经网是否用于此?如果是这样,是否存在已经完成处理的神经网络的现有数据文件?

opencv computer-vision face-detection

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

基本矩阵的旋转和平移不正确

我目前有一个立体相机设置.我已经校准了两个摄像头并且具有用于摄像头K1和摄像头的内在矩阵K2.

K1 = [2297.311,      0,       319.498;
      0,       2297.313,      239.499;
      0,             0,       1];

K2 = [2297.304,      0,       319.508;
      0,       2297.301,      239.514;
      0,             0,       1];
Run Code Online (Sandbox Code Playgroud)

我还确定了F使用findFundamentalMat()OpenCV 的两台摄像机之间的基本矩阵.我已经使用一对相应的点x1x2(在像素坐标中)测试了Epipolar约束,并且它非常接近0.

F = [5.672563368940768e-10, 6.265600996978877e-06, -0.00150188302445251;
     6.766518121363063e-06, 4.758206104804563e-08,  0.05516598334827842;
     -0.001627120880791009, -0.05934224611334332,   1];

x1 = 133,75    
x2 = 124.661,67.6607

transpose(x2)*F*x1 = -0.0020
Run Code Online (Sandbox Code Playgroud)

F我能够得到本质矩阵EE = K2'*F*K1.我E使用MATLAB SVD函数进行分解,以获得K2相对于旋转和平移的4种可能性K1.

E = transpose(K2)*F*K1;
svd(E);

[U,S,V] …
Run Code Online (Sandbox Code Playgroud)

matlab opencv triangulation stereo-3d matlab-cvst

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