一、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符号服务器”,将前面的勾去掉,(可能还有删除下面的那个缓存)。然后就不会在调试时加载了!