91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-13
  • 語言: C/C++
  • 標簽: 高斯??金字塔??

資源簡介

實現高斯金字塔和高斯差分金字塔,采用opencv實現的對圖像建立高斯金字塔與高斯差分金字塔。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?

using?namespace?std;
using?namespace?cv;

static?const?int???GAUSS_ADD_INTERVALS?=?3;
static?const?int???DOG_ADD_INTERVALS?=?2;
static?const?float?SIFT_INIT_SIGMA?=?0.5f;

int?_computeOctaves(const?cv::Mat&?vGrayImage);

void?_convertToGray(const?cv::Mat&?vSrcImage?cv::Mat&?voGrayImage);
void?_createInitImage(const?cv::Mat&?vSrcImage?bool?vDoubleImageSize?double?vSigma?cv::Mat&?voInitImage);
void?_buildGaussPyramid(const?cv::Mat&?vImage?int?vIntervals?double?vSigma?std::vector&?voGaussPyramid);
void?_buildDoGPyramid(const?std::vector&?vGaussPyramid?int?vIntervals?std::vector&?voDoGPyramid);

int?main()
{
cv::Mat?image?=?cv::imread(“1.jpg“1);

if?(!image.data)
{
std::cout?< return?-1;
}

cv::Mat?InitImage;

std::vector?gaussPyr;
std::vector?doGpyr;

_createInitImage(image?false?1.6?InitImage);
_buildGaussPyramid(InitImage?3?1.6?gaussPyr);
_buildDoGPyramid(gaussPyr?3?doGpyr);

vector?DisGauss(gaussPyr.size());
for?(int?i?=?0;?i? {
gaussPyr[i].convertTo(DisGauss[i]?DataType::type?100?0);
std::ostringstream?oss;
oss?< std::string?str?=?oss.str();
std::string?name?=?“gaussPyr“?+?str;
cv::imshow(name?DisGauss[i]);
}

for?(int?j?=?0;?j? {
std::ostringstream?oss;
oss?< std::string?str?=?oss.str();
std::string?name2?=?“DoGPyr“?+?str;
cv::imshow(name2?doGpyr[j]);
}

cvWaitKey(0);
return?0;
}

//******************************************************************
//FUNCTION:
int?_computeOctaves(const?cv::Mat&?vGrayImage)
{
int?OctavesNum;

OctavesNum?=?cvRound(log(MIN(vGrayImage.size().width?vGrayImage.size().height))?/?log(2))?-?2;

return?OctavesNum;
}

//******************************************************************
//FUNCTION:
void?_convertToGray(const?cv::Mat&?vSrcImage?cv::Mat&?voGrayImage)
{
Mat?gray;

if?(vSrcImage.channels()?==?3?||?vSrcImage.channels()?==?4)
cv::cvtColor(vSrcImage?gray?cv::COLOR_BGR2GRAY);
else
vSrcImage.copyTo(gray);
//voGrayImage?=?gray;
gray.convertTo(voGrayImage?DataType::type?1.0?0);
}

//******************************************************************
//FUNCTION:
void?_createInitImage(const?cv::Mat&?vSrcImage?bool?vDoubleImageSize?double?vSigma?cv::Mat&?voInitImage)
{
cv::Mat?OrginalImage?=?vSrcImage;
cv::Mat?GrayImage;

_convertToGray(OrginalImage?GrayImage);

double?SigmaDiff;

if?(vDoubleImageSize)
{
SigmaDiff?=?sqrtf(std

評論

共有 條評論