OpenCV程序显示Microsoft C++ 异常: 内存位置 0x001ef604 处的 cv::Exception

2024-11-25 12:35:37
推荐回答(1个)
回答1:

看注释的地方

#include "stdafx.h"
#include 
#include 

void salt(cv::Mat &image,int n);

int main(int argc, char* argv[])
{
cv::Mat img1;
cv::Mat img=cv::imread("cameraman.tif");

if (!img.data)
return -1;

img.copyTo(img1);
salt(img,300);

cv::namedWindow("原图像");
cv::namedWindow("添加椒盐噪声后的图像");
cv::imshow("原图像",img1);
cv::waitKey(0);
cv::imshow("添加椒盐噪声后的图像",img);
cv::waitKey(0);

return 0;

}

void salt(cv::Mat &image,int n)
{
for (int k=0;k {
//注意对宽高进行限制
int i=rand()%image.cols;
int j=rand()%image.rows;
if (image.channels()==1)
{image.at(j,i)=255;}
else if (image.channels()==3)
{
image.at(j,i)[0]=255;
image.at(j,i)[1]=255;
image.at(j,i)[2]=255;
}
}
}