OpenCV配置及开发中遇到的问题

一、opencv异常:0xxxx处(位于testopencv.exe中)有未经处理的异常:微软异常:cv::Exception,位于内存位置0xxxx处。

在网上查看了很多关于opencv异常的解决方法,也是五花八门。

1. C++里面书写文件路径时的确需要两个斜杠“\\”进行分隔

就是将单个斜杠“\”改成了两个斜杠“\\”

但是问题依然存在

2.编码问题

编解码问题,添加以下代码

uint8_t *out_buffer;

 

out_buffer = new uint8_t[avpicture_get_size(AV_PIX_FMT_RGB24, pCodecCtx->width, pCodecCtx->height)];

avpicture_fill((AVPicture *)pFrameYUV, out_buffer, AV_PIX_FMT_RGB24, pCodecCtx->width, pCodecCtx->height);

不可用,但问题依然存在

3.指针问题

rand()上面可能会出现问题。

—— rand()函数

int rand(void);从srand (seed)中指定的seed开始,返回一个[seed,RAND_MAX(0x7fff)]间的随机整数。


    #include <opencv2/core/core.hpp>

    #include <opencv2/highgui/highgui.hpp>

    #include <opencv.hpp>

    //修改后程序

    using namespace cv;

    void salt(Mat & , int );

    int main(){

    Mat image = imread("C:\\Baboon.jpg");

    salt(image,2000);

    namedWindow("Miffy");

    imshow("Miffy",image);

    waitKey(0);

    return 1;

    }

    void salt(Mat &image, int n){

    int im_rows=image.rows;

    int im_cols=image.cols;

    for (int k = 0; k < n; k++){

    int i=rand()%im_cols;

    int j=rand()%im_rows;

    if (image.channels()==1){

    image.at<uchar>(j,i)=255;

    }else if (image.channels()==3){

    image.at<Vec3b>(j,i)[0]=255;

    image.at<Vec3b>(j,i)[1]=255;

    image.at<Vec3b>(j,i)[2]=255;

    }

    }

    }

不可用,但问题依然存在

二、VS2012 编译程序时报无法加载PDB文件错误解决方案

s2012运行c++出现:无法查找或打开 PDB 文件。

1、点 调试

2、然后 选项和设置

3、右边勾上 启用源服务器支持

4、左边点 符号

5、把微软符号服务器勾

6、运行的时候等一下 会从微软下载符号!!

由于亲测的这个方法确实可行,但会出现每次编译都会碰到一直“VS正在从以下xxxx下载。。。”

解决方法:见标题六

三、测试窗口程序闪退

这块可以参考新建项目时环境设置:OpenCV+VS环境设置和依赖库配置

四、ntdll.dll

网上大神们也提供了各种解决办法,但亲测后是:

以管理员身份运行cmd,输入sfc/scannow

五、VS无可用源

解决问题:1、复制代码文件后老是去找原来文件路径的代码。

2、无可用源

第一方法:

导致F11不能进入源代码,出现上述错误。在网上找到解决办法:

工具->选项->调试->常规->去掉“要求源文件与原始版本完全匹配”复选框就OK。

第二方法:

全选CPP文件内容,选择 “编辑”-“高级”-“设置选定内容的格式”,保存,重新编译,OK搞定

六、VS一直显示正在从以下xxx下载

解决方法:

进入VS---工具---选项----调试----符号,看右边有个“Microsoft符号服务器”,将前面的勾去掉,(可能还有删除下面的那个缓存)。然后就不会在调试时加载了!

猜你喜欢

转载自blog.csdn.net/Aidam_Bo/article/details/81334089