c#openCV图片传递-尝试读取或写入受保护的内存。这通常指示其他内存已损坏。解决方法
未处理AccessViolationException
这通常指示其他内存已损坏,这里内存损坏并非物理的内存条损坏。猜想是执行到此步骤后,内存空间被清理了,没有找到内存地址的感觉。
public static bool RecognizeCpositiveAndNegative(PictureBox pbox_disImage1, Mat tempimg)
当调用此函数后,信息传递给tempimg.
Mat org_被测图片 = tempimg.Clone();
复制tempimg的内容时发生错误。估计tempimg的所占内存空间被清理掉了,所以就报错。
如何解决报错:
else if (RevString == "check") //检查是否防反。。。
{
// SendData("ready_ok");
g_match_image = null;
g_match_image = SimpleGrab.SimpleGrab.获取相机图像();
//获取的图像为空
if (g_match_image == null)
{
SendData("error1");
this.Invoke(new EventHandler(delegate { richTextBox1.AppendText("没有获取到图像" + "\r\n"); }));
return;
}
else
{
bool result = CRecognizeCpositiveAndNegative.RecognizeCpositiveAndNegative(this.pbox_disImage1, g_match_image);
tempimg的上级调用位置是g_match_image,
g_match_image = SimpleGrab.SimpleGrab.获取相机图像();//即执行拍照,图像信息保存在g_match_image里面。
既然报错。那就不要传递这个参数。直接在被调用函数里面拍照。就不执行tempimg.clone()了。
---------------------
//作者:txwtech
public static bool RecognizeCpositiveAndNegative(PictureBox pbox_disImage1, Mat tempimg)
{
Mat org_放正模板 = new Mat(Application.StartupPath + "\\image\\放正模板.bmp", ImreadModes.Grayscale);
Mat org_放反模板 = new Mat(Application.StartupPath + "\\image\\放反模板.bmp", ImreadModes.Grayscale);
// Mat org_被测图片 = tempimg.Clone();
Mat org_被测图片 = SimpleGrab.SimpleGrab.获取相机图像();//直接在这里拍照获取图片信息。
if (tempimg.NumberOfChannels !=1)
{
CvInvoke.CvtColor(org_被测图片, org_被测图片, ColorConversion.Bgr2Gray);
}
c#openCV图片传递-尝试读取或写入受保护的内存。这通常指示其他内存已损坏。解决方法的更多相关文章
- Avi视频生成缩略图时,提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”
需求:录制Avi格式视频成功后,使用DirectShow生成缩略图,由于视频录制时,宽高分辨率可调节,所以有些情况下,生成缩略图会抛出异常“尝试读取或写入受保护的内存.这通常指示其他内存已损坏”. 异 ...
- C# 调用OpenCVSharp报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”
一.描述问题 当托管代码调用非托管代码的时候,经常会出现如下报错:“尝试读取或写入受保护的内存.这通常指示其他内存已损坏”. 二.原因分析 由于非托管代码的内存指针的回收是由非托管代码自身手动完成的, ...
- asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法
来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...
- SQLServer2012在登录远程服务器实例时报错:尝试读取或写入受保护的内存
SQLServer2012在登录远程服务器实例时报错:尝试读取或写入受保护的内存.这通常指示其它内存已损坏.(System.Data). 而登录本地数据库实例则能顺利登入,不存在上述问题. 试一试重置 ...
- AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
在使用SqlConnection.Open()连接到SQL Server 2008 R2 SP2时,一直报以下异常: AccessViolationException: 尝试读取或写入受保护的内存.这 ...
- vs.net 2005 C# WinForm GroupBOX 的BUG?尝试读取或写入受保护的内存。这通常指示其他内存已损坏
其实很久没有写程序了,国庆难得有空闲,写了个游戏辅助机器人,程序写好能用后本想把UI控件放到GroupBox里归下分类,美化下界面,结果一运行报“尝试读取或写入受保护的内存.这通常指示其他内存已损坏” ...
- ArcEngine尝试读取或写入受保护的内存
先说一下我的开发环境: Win10 + ArcGIS10.0 + ArcEngine10.0 + Framework4.0 今天调用新的GP工具则出现"尝试读取或写入受保护的内存.这通常指示 ...
- ArcEngine开发 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
if(pFeature!=null) { IPoint pnt = pFeature.Shape as IPoint; pntArray.Add(pnt); } 调试是pntArray.Add(pnt ...
- System.AccessViolationException,尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
从事件查看器中发现,IIS不定期崩溃并重启的现象.抓取crash dump文件后,发现能够看到异常,但没有堆栈信息(主要是只会看托管代码的堆栈,非托管的不清楚.),问题表现及dump日志的截图如下: ...
随机推荐
- DFS与DP算法
名词解释: DFS(Dynamic Plan):动态规划 DFS(Depth First Search):深度优先搜索 DFS与DP的关系 很多情况下,dfs和dp两种解题方法的思路都是很相似的,这两 ...
- Java IO(五)字节流 FileInputStream 和 FileOutputStream
Java IO(五)字节流 FileInputStream 和 FileOutputStream 一.介绍 字节流 InputStream 和 OutputStream 是字节输入流和字节输出流的超类 ...
- ArrayList及List的常用方法
ArrayList package com.aff.coll; import java.util.ArrayList; import java.util.List; import org.junit. ...
- 关于vue+element对ie9的兼容el-upload不支持在IE9上传
关于vue+element对ie9的兼容el-upload不支持在IE9上传 https://lian-yue.github.io/vue-upload-component/#/zh-cn/ 解决方案 ...
- 深入理解JVM(③)——之HotSpot虚拟机对象探秘
前言 上篇文章介绍了Java虚拟机的运行时数据区域,大致明白了Java虚拟机内存模型的概况,下面就基于实用优先的原则,以最常用的虚拟机HotSpot和最常用的内存区域Java堆为例,升入探讨一下Hot ...
- c#tcp多线程服务器实例代码
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- Java实现 LeetCode 542 01 矩阵(暴力大法,正反便利)
542. 01 矩阵 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离. 两个相邻元素间的距离为 1 . 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 ...
- Java实现蓝桥杯模拟带九9的数的个数
问题描述 在1至2019中,有多少个数的数位中包含数字9? 注意,有的数中的数位中包含多个9,这个数只算一次.例如,1999这个数包含数字9,在计算只是算一个数. 答案提交 这是一道结果填空的题,你只 ...
- Java实现 LeetCode 309 最佳买卖股票时机含冷冻期
309. 最佳买卖股票时机含冷冻期 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 . 设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股 ...
- Java实现控制台版CS
也可以把这四个类直接复制下去放在一个包下面 父类 package Cs1_6; public abstract class Persion { public abstract void Attack( ...