精华内容
下载资源
问答
  • 但是在调试运行时,弹出:“将一个无效参数传递给了将无效参数视为严重错误的函数”。代码中findCoutours函数是在子函数中调用的,随后采用放到主函数、修改入口参数等还是报错,也参考了CSDN中的“一个大...

            先说一下出错时的环境配置:Win10+VS2015+OpenCV3.2.0

            在编写火焰检测程序时候,用到findCoutours函数提取火焰边缘轮廓,以便找寻静态特征。但是在调试运行时,弹出:“将一个无效参数传递给了将无效参数视为严重错误的函数”。代码中findCoutours函数是在子函数中调用的,随后采用放到主函数、修改入口参数等还是报错,也参考了CSDN中的“一个大牛汇集的好多种方案”,逐一试用还是不行。

            解决方案如下:1.选择“卸载”VS2015,但此时会弹出若干选项,选择“修复”即可。

                                     2.更换OpenCV版本。到OpenCV主页选择了最新的3.4.9版本,然后重新进行了开发环境的配置。

            后来思考了一下,之前学习OpenCV时候应该也是用过findCoutours函数的,可能因为某些原因导致以上错误,应该与VS2015无关。所以,可以按照配置教程只选择更换OpenCV版本即可,OpenCV3.4.9兼容VC14和VC15,对应的VS2015和VS2017。

            不会配置的朋友可以参考一下我的配图,配置教程来源网络,亲测可用(只需把3.1.0更换为3.4.9)。

           

            第一步:添加环境变量和新建项目配置属性

     

            第二步:附加注意事项

     

    展开全文
  • [图片说明](https://img-ask.csdn.net/upload/201707/30/1501383565_65269.png)0x0FA5E636 (ucrtbased.dll) (set.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。 这是哪里错了 ...
  • 使用opencv2.4.13的sift、surf、orb方法时,输入图像的大小太大会导致奇怪的出错:无效参数输入一个将无效参数视为严重错误的函数。花了三个晚上的时间终于发现了这个bug,然而到现在也找不到是什么原因引起的,如果...

    使用opencv2.4.13的sift、surf、orb方法时,输入图像的大小太大会导致奇怪的出错:无效参数输入一个将无效参数视为严重错误的函数。一直找不到是什么原因引起的,如果有人知道请务必告诉我。

    12-12更新
    不是输入图像的大小问题,也不是格式问题,
    还以为opencv2.4.13本身有问题,下了opencv2.4.13.6之后还是报这个错误,经过一系列排查,突然想起以前不知道在哪个博客看到过说这个报错是由于内存访问冲突引起的,这时想起了之前由于opencv配置的问题把opencv的dll文件都放到windows下的system32文件夹下面,然后又把opencv存放dll文件的bin文件夹加入了系统环境变量,从而导致了同时访问两边的文件导致冲突,把system32文件夹下面所有的opencv的dll文件都删除之后就不报错了。

    但是没发现这个bug之前两张一模一样的图片进行匹配却不会报这个错误(或者是两张相似度比较高的图片进行匹配),现在还不懂原因是什么。

    也可能是2413版本确实有问题,可能是因为优先找system32里的文件,然而里面却是2413版而非24136版的,所以导致我重新配了24136版本也还是报错,不过现在也懒得管这些了,作业实验课设太多要求又一大堆做的我实在脑阔疼。

    其他包如果也出现这个报错可能也有这种环境变量冲突的情况,发出来给大家提个醒。

    展开全文
  • 在使用findContours函数时,release可以通过,debug一直在报错:“将一个无效参数传递给了将无效参数视为严重错误的函数”。 这里有个大牛汇集的好多种解决方法: ... 但是结合所有方法并不能解决我的问题。...

    在使用findContours函数时,release可以通过,debug一直在报错:“将一个无效参数传递给了将无效参数视为严重错误的函数”。

    这里有个大牛汇集的好多种解决方法:

    http://blog.csdn.net/auto1993/article/details/52694521

    但是结合所有方法并不能解决我的问题。

    因为我使用的二值图像前期处理较繁琐,所以就想着把findContours的一系列功能直接整合成一个子函数,然后用主函数调用,结果完美解决了我的问题。

    我至今不知道为什么创建子函数调用就可以使用了,如果有路过的大牛知道,恳请您不吝赐教,提前谢谢各位了!


    展开全文
  • 我的应用大体功能是这样的,使用opencv的接口,从摄像头实时读取color数据显示,并完全保存所有视频到硬盘,已经点击...第一个错误: 第二个错误: void FaceCapture::showColor(cv::Mat colorFrame) { ...

    我的应用大体功能是这样的,使用opencv的接口,从摄像头实时读取color数据显示,并完全保存所有视频到硬盘,已经点击按钮之后将当前的数据帧保存为图片存储到硬盘。

     

    第一个错误:                                     

    第二个错误:

    void FaceCapture::showColor(cv::Mat colorFrame)

    {

       

        //colorframeMutex.lock();

        m_colorFrame = colorFrame;

        if (g_colorWriter.isOpened())

        {

            g_colorWriter << colorFrame;

        }

        //colorframeMutex.unlock();

     

        //cv::resize(colorFrame, frameForShow, dsize );

        int img_width = colorFrame.cols; // 在这行发生如上错误,上面两个错误都有可能发生。

        int img_height = colorFrame.rows;

        int channelnum = colorFrame.channels();

        if (NULL == g_prgbdatabuff)

        {

            g_prgbdatabuff = (uchar *)malloc(img_width * img_height * channelnum);

        }

     

        uchar* colorData = colorFrame.data;

        bool isColorImgTwoDark = true;

        int MaxValueCount = 0;

        for (int i = 0; i < img_width * img_height; i++)

        {

            int rgbaOffset = i * channelnum;

            g_prgbdatabuff[rgbaOffset] = colorData[rgbaOffset + 2];

            g_prgbdatabuff[rgbaOffset + 1] = colorData[rgbaOffset +1];

            g_prgbdatabuff[rgbaOffset + 2] = colorData[rgbaOffset];

     

            if ((255 == colorData[rgbaOffset + 2])

                 && (255 == colorData[rgbaOffset + 1])

                 && (255 == colorData[rgbaOffset]))

            {

                 MaxValueCount++;

                 isColorImgTwoDark = false;

            }

     

            if ((IMG_DARKNESS_THRESHOLD <= colorData[rgbaOffset + 2])

                 || (IMG_DARKNESS_THRESHOLD <= colorData[rgbaOffset + 1])

                 || (IMG_DARKNESS_THRESHOLD <= colorData[rgbaOffset]))

            {

                 isColorImgTwoDark = false;

            }

        }

       

        QImage img(g_prgbdatabuff, img_width, img_height, QImage::Format_RGB888);

     

        QPixmap pixmap = QPixmap::fromImage(img);

        QPixmap scaredPixmap = pixmap.scaled(ui.label_color->width(), ui.label_color->height());

        ui.label_color->setPixmap(scaredPixmap);

     

        if (IMG_COLOR_OVER_EXPOSURE_PIXEL_COUNT <= MaxValueCount)

        {

            //ui.label_color_quality->setStyleSheet("color: rgb(255,0,0);");

            ui.label_color_quality->setText(QString::fromLocal8Bit("Color图像过度曝光"));

        }

        else if (true == isColorImgTwoDark)

        {

            //ui.label_color_quality->setStyleSheet("color: rgb(255,0,0);");

            ui.label_color_quality->setText(QString::fromLocal8Bit("Color图像过暗"));

        }

        else

        {

            //ui.label_color_quality->setStyleSheet("color: rgb(0,0,0);");

            ui.label_color_quality->setText(QString::fromLocal8Bit("Color图像正常"));

        }

     

        //free(data);

     

    }

    遇到这个问题,非常头大,网上的说法也乱七八糟。基本找不到一个可行的解决方案。而且这个问题也不是每一个数据帧都出现,不断的测试,突然什么时候就崩出来。

     

    针对这个问题,第一反应是colorFrame 的Mat结构被破坏了。然后开始找各种关于Mat的信息。首先寻找判断判断Mat是否有效的两个函数:empty(如果Mat的data区域没有数据,或者尚未开辟空间,则返回false。),另一个是continuous(用来判断Mat中的数据是否是连续内存存的);加入如上两个判断之后发现虽然Mat比较大,1280*800的分辨率存储color数据,但是这两个判断基本上也都能通过,最后了解到像Mat结构确实比较特殊,Mat的赋值运算= 不会开辟新的空间,只会增加引用计数,于是找到可以使用clone或者copyto来进行深copy,多次尝试之后依然无法解决问题。另外了解到Mat 作为参数时,及时是直接传值其实也是传指针。搞过来搞过去,还是无法解决问题。

     

    调用上面showColor函数的调用函数是如下的线程函数:

    void ColorThread(VideoCapture cap)

    {

        cv::Mat input_image;

        Rect faceRect;

        clock_t currentTime;

     

        bool isReadOk;

        while (g_running)

        {

            isReadOk = cap.read(input_image);

            if (false == isReadOk)

            {

                 continue;

            }

     

            if (input_image.empty())

            {

                 continue;

            }

                    //这里拿到彩色图之后对图像进行人脸检测,检测成功后可以根据一定的条件设置ROI曝光

            detectFace(input_image, faceRect);       

                 currentTime = clock();

     

                 if (currentTime - LastSetRoiTime > (1 * CLOCKS_PER_SEC))

                 {

                     if (faceRect.width > 50)

                     {

                         if (!CAEParamSetting::setAEROIArea(faceRect))

                         {

                             logUtil.error("WRITER BUFFER ERROR");

                         }

                     }

     

                     LastSetRoiTime = currentTime;

                 }

           

     

            g_io_mutex.lock();

            g_w->showColor(input_image);

            g_io_mutex.unlock();

           

        }

    }

    根据上面的函数我又猜想是不是g_io_mutex使用lock不合适,showColor发生异常导致锁无法释放,于是改用lock_guard来包装g_io_mutex。这个方法也不凑效。

     

    于是开始使用懒人定位法,一行一行注释掉看到底是哪一行发生问题。结果把g_w->showColor(input_image);注释掉后没发生问题。于是就盯着这个函数。然后进入这个函数,再一行一行的注释看是否能发生问题。最后发现,把如下保持视频的代码注释掉之后:

        if (g_colorWriter.isOpened())

        {

            g_colorWriter << colorFrame;

        }

    这个问题很难出现。于是想到是不是得给主线程中操作g_colorWriter的地方加锁,g_colorWriter在应用中也会进行多次open及release。保证互斥访问。加锁之后果然问题解决。

     

    应用中还有一个保存m_colorFrame图片到硬盘的imwrite操作,再刚才的调试过程中是注释掉的,现在放开之后,会再imwrite保存图片的地方也出现上述问题。于是在imwrite的地方加了同一把锁g_io_mutex。在这里加锁之后,问题果然解决。

     

    到此,其实问题的原因已经比较清楚了,这是一个多线程访问共享数据,导致访问数据冲突出现的问题。

     

    但是遇到另外一个问题。界面上的操作变得非常卡,于是想到应该是g_io_mutex锁保护的关键区域太多导致。将不必要的操作放到锁的外面,缩小关键区域之后,界面也不卡了。问题顺利解决。

     

     

    展开全文
  • <p>#include<iostream> using namespace std; #include<list> <p>void Solution(list<int>& l) {<!-- -->  for (list<int>::iterator it =...}</p>
  • 原因:stream无效,文件打开失败。 没有 图中注释部分
  • 点继续提示:0x0FD72793 (appcrt140d.dll) (ca4.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。 调试输出如下: Debug Assertion Failed! Program: ...\test\Documents\...
  • 0x00007FFCCA14B7EC (ucrtbased.dll) (Project1.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。 读某一个文件,但是并没有在文件夹中放这个文件
  • 1.调试VS程序,弹出异常:0x00007FFE9071C408 (ucrtbase.dll) (InnovpowerUAV.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。 2.在错误代码地方加入断点,发现变量已经为空。 ...
  • 1.请问为什么会出现这种无效参数的问题 经过vs编译过后报错截图如下![图片说明](https://img-ask.csdn.net/upload/202010/14/1602671327_277269.jpg) 2.完整代码如下 ![图片说明]...
  • void drop(int a)//一个删除deque容器中元素的函数 { deque<int>::iterator it; it = kn.begin(); kn.erase(it+a); cout << "排除一个" << endl; } for (int a = 0; a < b; a++)//...
  • cout 请有序输入第一个数组的长度"; cin >> a; cout 请输入a数组的元素"; for (int i = 0; i ; i++) { cin >> na[i]; } cout 请有序输入第二个数组的长度"; cin >> b; cout 请输入b数组的元素"; ...
  • [img=... 现实提示4996错误,在预处理器中加入了_CRT_SECURE_NO_WARNINGS解决了4996错误但变成了将一个无效参数传递给了将无效参数视为严重错误的函数。这怎么解决啊
  • 次 ORA-00909:参数个无效

    千次阅读 2020-10-13 17:06:09
    今天在开发中在给一个sql加查询条件的时候遇到ORA-00909:参数个数无效 报错,然后去查看sql发现参数并没有问题。然后自己查阅资料发现如果是sql语句的拼写错误也会导致报这个错。 后来恍然大悟发现是自己sql拼写...
  • 报错mybatis无效参数类型问题,mybatis中sql语句的参数,如果这参数可以为空,那么则必须添加jdbcType,否则报错无效参数类型。 Mybatis文档中有如下解释: 像 MyBatis 的剩余部分一样,javaType 通常可以从...
  • OSError: [WinError 10014] 系统检测到在一个调用中尝试使用指针参数时的无效指针地址。 Task exception was never retrieved future: <task finished name="Task-7" coro="<IocpProactor...
  • 一个选项可以应用参数来删除指定范围内的数据值并删除那些无效的观察值。 该存储库包含四个用于数据提取的python文件。 Burn_Compiler.py 该文件包含特定于每个刻录设置的功能。 由于刻录在不同的日子发生,因此...
  • IE7下报参数无效

    千次阅读 2013-08-22 10:25:51
    今天开发遇到的,具体情况是,我在一个页面内有一个iframe,这个ifame调用了jquery创建option,然后添加到父页面的一个select中。 在IE8以上或者其他浏览器没问题,在IE8兼容IE7模式也没问题,只在原生IE7出错。 ...
  • jwt.sign 传入参数无效

    2020-12-02 00:32:40
    因为看到之前有一个建议使用内部配置的Issues,已经mr进来了。可能是使用默认配置时传入的配置覆盖了,导致传入失效。</p><p>该提问来源于开源项目:okoala/egg-jwt</p></div>
  • 情况为:在cmd中,运行java -jar *.jar,出现classnotfound异常,jar中包含lib下面jar...之组件的Jar文件拷贝到公共JRE目录下的lib\ext下。比如,我的JDK1.5装在C: \Program Files\Java下,之下的j2re1.5.0是...
  • 这是另一个C ++命令行参数/选项解析器。 它被编写为其他框架(如 , , 等)的简单惯用替代方法。 目的是通过易于使用的API以简单的方式满足大多数参数解析需求。 它可以对所有参数进行一次传递,识别以- (短)或-...
  • 1、新建一个线程组,访问百度【www.baidu.com】,并为线程组添加HTTP信息头管理器、DNS 缓存管理器、HTTP 授权管理器、HTTP Cookie管理器和HTTP缓存管理器; 2、在线程组页面,【循环次数】修改为3 问题:点击运行...
  • 今天将一个ACC的数据库转换成ms-sql以后发现在使用replace替换语句的时候出现: SQL中函数 replace 的参数 1 的数据类型 ntext 无效。找了半天找到了解决办法: 因为ntext需要转化下 用如下语句即可解决: 代码如下:...
  • 列: SELECT @count=COUNT(sysid) FROM Student WHERE Id IN (@Sysids) ...这时候可以其转化成条变量语句,然后去执行这条语句,以及输出这变量即可 如: SET @sql=N' SELECT @count=COUNT(sysid) FROM St...
  • 这样的方式,in()里面只能存放一个值,像in('test')这样,但是,当in('test1','test2','test3')这样的形式就没有作用。 需要 in( 变量 )中的变量格式化。用Oracle的正则表达式。因为我在Java后台封装的String为 ...
  • 最近遇到一个奇葩的问题, 我需要在前台传参数到数据库存储过程里使用。 参数里面的数据是形如这样1355000004,1355000005,1355000005传进去的。 最后参数放进存储过程里面会报"无效数字"的错。 但是单独SQL...
  • 原文:SqlServer Bug:复制架构更改参数(replicate_ddl)无效 最近测试可更新订阅的架构更改问题,发现了一个 bug。 在复制中,当在发布数据库对发布数据库进行架构更改时,结构自动同步到订阅中(这就是 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,091
精华内容 436
关键字:

将一个无效参数