• 关于cvPyrSegmentation(src, dst, storage, &comp, level, threshold1, threshold2)函数报错的问题解答


    先挂上我写的代码:

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <highgui.h>
    #include <cv.h>
    #include <opencv2/legacy/legacy.hpp>
    
    using namespace std;
    using namespace cv;
    
    
    void f(IplImage *src, IplImage *dst)
    {
        CvMemStorage *storage = cvCreateMemStorage(0);
        CvSeq *comp = NULL;
    
        cvPyrSegmentation(src, dst, storage, &comp, 4, 200, 50);
        int n_comp = comp->total;
    
        for (int i = 0; i < n_comp; i++)
        {
            CvConnectedComp *cc = (CvConnectedComp *)cvGetSeqElem(comp, i);
        
        }
        cvReleaseMemStorage(&storage);
    
    }
    
    int main(int argc, char *argv[])
    {
        cvNamedWindow("ch5_1");
        IplImage *src = cvLoadImage("F:/BaiduNetdiskDownload/dog1.bmp");
        if (!src)
        {
            printf("Couldn't seem to Open the image
    ");
            return -1;
        }
        IplImage *dst = cvCreateImage(
            cvSize(src->width, src->height),
            src->depth,
            src->nChannels
            );
        //printf("%d
    ",src->nChannels);//查看当前图像的通道数
        f(src, dst);
        //show the image in the named window
        cvShowImage("ch5_1", dst);
        while (1)
        {
            if (cvWaitKey(10) == 27)break;
        }
    
        cvDestroyWindow("ch5_1");
        cvReleaseImage(&src);
        cvReleaseImage(&dst);
    
        return 0;
    }

    问题1:cvPyrSegmentation()函数没找到?

      cvPyrSegmentation()这个函数是包含在opencv2/legacy/legacy.hpp文件中,所以需要引入头文件

    问题2:程序运行到cvPyrSegmentation()时,程序dang掉了?(这个问题纠结了好一会,愣是没找到原因,最好还是在learning OpenCV书上找到了解决之道)

      书上是这样写的:

    关于src和dst,需要特别注意一点:由于图像金字塔各层的长和宽都必须是整数,
    所以必须要求起始图像的长和宽都能够被2整除,并且能够被2整除的次数不少以金字塔总层数。
    例如,对于4层金字塔的高度或宽度为80(2 * 2* 2 * 5)是满足要求的,而为90时(2 * 3* 3 * 5)就是不符合要求的。

      所以我将原图设置为了400 * 400 的图像,证实其的正确性。

    下面是出图的结果:(由于对图像进行了不正当的操作,原图稍微有点模糊,但不影响最终的效果)

  • 相关阅读:
    如何判断两个IP是否在同一网段
    http://blog.csdn.net/a9529lty/article/details/6454156
    http://blog.csdn.net/a9529lty/article/details/6454145
    tomcat下配置https环境(windows环境)
    hosts文件配置及主要作用
    函数y=sin(1/x)曲线
    求证:a^4+b^4 ≧a^3*b+a*b^3
    三种双二次曲线
    已知m和n是两个整数,并且m^2+mn+n^2能被9整除,试证m,n都能被3整除。
    x为正变数,求y=x^3/(x^4+4)的最大值
  • 原文地址:https://www.cnblogs.com/whiteBear/p/9832984.html
Copyright © 2020-2023  润新知