我在实现《OpenCV2计算机视觉编程手册》第2章 2.2 节 存取像素值 中的椒盐噪声例子中遇到的程序错误。

原始输入程序:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv.hpp>
//2.2节中的程序,但是出现问题
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){
for (int k = 0; k < n; k++){
int i=rand();
int j=rand();
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;
}
}
}

程序出现的问题如下:

sample_1.exe 中的 0x7534c6e3 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0012f52c 处的 cv::Exception。

在找BUG的时候,毫无头绪,在网上去搜索相关的问题,发现这个问题主要出现的是指针的问题。

自己分析程序,感觉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;
}
}
}

OpenCV中遇到Microsoft C++ 异常 cv::Exception的更多相关文章

  1. OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000005C8ECFFA80 处。”的异常

    对于OpenCV的安装 要感谢网友空晴拜小白提供的教程 链接如下: https://blog.csdn.net/sinat_36264666/article/details/73135823?ref= ...

  2. OpenCV使用:加载图片时报错 0x00007FFC1084A839 处(位于 test1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x00000026ABAFF1A8 处。

    加载图片代码为: #include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgu ...

  3. OpenCV中的结构体、类与Emgu.CV的对应表

    OpenCv中的 C 结构 OpenCV中的 C++ 封装 Emgu.CV中的 C# 封装 OpenCV 和 Emgu.CV 中的结构罗列 谢谢阅读,有误希望指正 原文地址 Basic Structu ...

  4. 关于opencv中cv::Mat设置roi

    opencv中设置roi实验: cv::Mat SrcImg; SrcImg = cv::imread("../resource/cpw3.png"); cv::imshow(&q ...

  5. C++异常第二篇---C++标准库异常类exception的使用

    1 继承图示 2 具体讲解 C++标准库异常类继承层次中的根类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下: na ...

  6. IIS中使用Microsoft.Office.Interop.Excel 常见问题:RPC 服务器不可用。 (异常来自 HRESULT:0x800706BA) 的异常。等

    IIS中使用Microsoft.Office.Interop.Excel 异常1: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} ...

  7. Python中获取异常(Exception)信息

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序 ...

  8. 用cv::Scalar来设置opencv中图片的颜色

    1 怎样使用cv::Scalar来设置opencv中的颜色 cv::Scalar的构造函数是cv::Scalar(v1, v2, v3, v4),前面的三个参数是依次设置BGR的,和RGB相反,第四个 ...

  9. Python中的异常(Exception)处理

    异常 当你的程序出现例外情况时就会发生异常(Exception).例如,当你想要读取一个文件时,而那个文件却不存在,怎么办?又或者你在程序执行时不小心把它删除了,怎么办?这些通过使用异常来进行处理. ...

随机推荐

  1. javascript实现模仿迅雷电影评分

    效果图: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  2. stm32之RCC

    stm32时钟系统的意义: 1.电源的开关作用,达到低功耗效果: 2.调节时钟的速度: 对于每个外设,都要设置设置,stm32的时钟系统为了更低功耗: STM32时钟系统框图分析: 时钟源: 时钟是S ...

  3. java读取远程url图片,得到宽高

    链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100nrb6.html import java.io.IOException;import java.awt ...

  4. Easyui datagrid 批量编辑和提交

    <script type="text/javascript"> $(function() { var $dg = $("#dg"); $dg.dat ...

  5. Python监控网站运行状况

    利用python便捷的类库,可以方便快速实现对网站运行状况的监控,主要包括对80端口(即网站运行端口),其它tcp服务等端口的监控就可以了解服务器大概的一个运行状况,使用的库主要为urllib2及so ...

  6. 2014 HDU多校弟五场A题 【归并排序求逆序对】

    这题是2Y,第一次WA贡献给了没有long long 的答案QAQ 题意不难理解,解题方法不难. 先用归并排序求出原串中逆序对的个数然后拿来减去k即可,如果答案小于0,则取0 学习了归并排序求逆序对的 ...

  7. DE1-SOC连接设定

    将电源供应器插上电源接口. 使用白色的USB Type B线材将计算机与DE1-SoC上的USB-Blaster II接口连接.此接口主要负责FPGA配置以及HPS Debug使用. 使用Mini-U ...

  8. Directshow 通过 put_Owner 指定显示窗口后,自动刷新问题

    在Directshow中,我们可以对render指定显示窗口,在写程序的过程中, 发现通过put_Owner设置的显示窗口存在自动刷新问题,譬如窗口被遮挡然后再次露出时,被遮挡部分不能自动刷新,需要拖 ...

  9. 深入JDK源码之Arrays类中的排序查找算法(转)

    原文出处: 陶邦仁 binarySearch()方法 二分法查找算法,算法思想:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列 ...

  10. Linux c c++ 开发调试技巧

    看到一篇介绍 linux c/c++ 开发调试技巧的文章,感觉挺使用,哪来和大家分享. 通向 UNIX 天堂的 10 个阶梯Author: Arpan Sen, 高级技术人员, Systems Doc ...