opencv调试时显示:0x00... 处的第一机会异常(xx.exe 中): 0xC0000005: 读取位置 ...时发生访问冲突

driftingbottle_ 2018-04-22 10:06:33
opencv小白求助各路高手,调试时总会显示第一机会异常,断点在24行(pTo.at<uchar>(i, j) = bt;)是不是与pTo的值为<为NULL时的结构>这个地方有问题?以下是代码:

#include <opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;

void Thresholdd(Mat pTo, uchar bThre)
{
int i, j;
int bt;
Size size=pTo.size();
for (j = 0; j <size.height; j++)
{
for (i = 0; i<size.width; i++)
{
bt = pTo.at<uchar>(i, j);
if (bt<bThre)
bt = 0;
else
bt = 255;

pTo.at<uchar>(i, j) = bt;
}
}
}


int main()
{
Mat srcImage = imread("3.bmp");
imshow("【原始图】", srcImage); //显示原始图
Thresholdd(srcImage,125);

namedWindow("二值化", WINDOW_NORMAL);
imshow("二值化", srcImage);

waitKey(0);

return 0;
}

0x000000013FEE151F 处的第一机会异常(在 ZZcanny(替换).exe 中): 0xC0000005: 写入位置 0x0000000001DE0720 时发生访问冲突。
0x000000013FEE151F 处有未经处理的异常(在 ZZcanny(替换).exe 中): 0xC0000005: 写入位置 0x0000000001DE0720 时发生访问冲突。
...全文
2152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
driftingbottle_ 2018-06-19
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
赵老师的意思是双击调用堆栈里面有箭头的那一行,然后自动转到代码出错的地方吗?我的程序触发断点后我点击中断,然后双击右下角调用堆栈中箭头所在的那一行,光标会自动移动到代码中出错的那一行。刚接触没多久,如果有些问题问的过于白痴,还请老师不要见笑
driftingbottle_ 2018-06-19
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
指针越界访问,或者空指针访问
是的,我在遍历是用的是单通道,但进行读写就变成了三通道,这里应该是指针越界了
赵4老师 2018-04-23
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
oyljerry 2018-04-23
  • 打赏
  • 举报
回复
指针越界访问,或者空指针访问

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧