调试断言失败 rgbConverted.cpp
Debug Assertion Failed with rgbConverted.cpp
首先说,这是一个重复的问题,但不是同一个问题。
当我 运行 我的代码时,显示此消息,但没有错误。
#pragma once
using namespace System::Drawing;
ref class rgbConvert
{
private:
System::Drawing::Bitmap^ grayImage;
System::Drawing::Bitmap^ bainaryImage;
System::Drawing::Bitmap^ rgbImage;
int xsize;
int ysize;
bool **BArray;
int **GrayArray;
int **binary;
FILE *fp;
static float coef01 = (float)0.2989;
static float coef02 = (float)0.5870;
static float coef03 = (float)0.1140;
public:
rgbConvert(System::Drawing::Bitmap^ im)
{
rgbImage = im;
xsize = rgbImage->Height;
ysize = rgbImage->Width;
}
rgbConvert(int height, int width)
{
xsize = height;
ysize = width;
}
int** getGrayImageArray ()
{
GrayArray = new int * [xsize];
for (int i = 0; i < xsize; i++ )
{
GrayArray[i] = new int[ysize];
}
for( int i = 0; i < this->xsize; i++ )
{
for ( int j = 0; j < this->ysize; j++ )
{
System::Drawing::Color^ clr = this->rgbImage->GetPixel(j, i);
int pixel = clr->ToArgb();
//int alpha = (pixel >> 24) & 0xff;// no need here
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel ) & 0xff;
int grayC = int(coef01*red + coef02*green + coef03*blue);
GrayArray[i][j] = grayC;
}// inner for*/
}
return GrayArray;
}
void getGrayImageArray (int** gArray)
{
this->GrayArray = gArray;
}
bool** GetBinaryArray( int level )
{
BArray = new bool * [xsize];
for (int i = 0; i < xsize; i++ )
{
BArray[i] = new bool[ysize];
}
binary = new int * [xsize];
for (int i = 0; i < xsize; i++ )
{
binary[i] = new int[ysize];
}
fp=fopen("C:\binary.txt","w");
int grayC;
for ( int xVal = 0; xVal < xsize; xVal++ )
{
for( int yVal = 0; yVal < ysize; yVal++ )
{
grayC = GrayArray[xVal][yVal];
if ( grayC >= level )
{
BArray[xVal][yVal] = true;
binary[xVal][yVal] = 1;
fprintf(fp,"%d",binary[xVal][yVal]);
}
else
{
BArray[xVal][yVal] = false;
binary[xVal][yVal] = 0;
fprintf(fp,"%d",binary[xVal][yVal]);
}
}// inner for*/
}
fclose(fp);
return BArray;
}
};
当我按下 Retry 时,断点显示这一行。
fprintf(fp,"%d",binary[xVal][yVal]);
如果我删除这些行然后在主程序中显示断点。
int main(array<System::String ^> ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Create the main window and run it
Application::Run(gcnew Form1());
return 0;
}
断点显示在 return 0
这一行。
其实这是一个众所周知的问题。我已经解决了这个话题。在我的代码中,我在 C 驱动器中创建了文本文件、docx 文件和图像。但是我的电脑没有访问C盘的权限。
然后我按照以下步骤解决了:
如果您可以访问cmd,您可以在
Vista/Windows 7 使用以下命令:“secedit /configure /cfg
%windir%\inf\defltbase.inf /db defltbase.sdb /verbose"(无引号。)
要查看此命令的作用,请转至此处:如何恢复安全性
设置为默认设置?
注意:如果登录后无法访问 cmd,请使用本指南
系统恢复选项。你可以进入命令行,当你
访问“系统恢复选项”屏幕。
这个命令似乎解决了所有权问题
背面,尽管看起来什么都没有改变。转到资源管理器,
右键单击 C: 并转到属性。
转到“安全”选项卡,然后转到“高级”。
转到“所有者”选项卡。现在您应该可以单击“编辑”了。
如果您在下面的列表中没有管理员
"Change owner to:" 然后转到 "Other users or groups"。如果你这样做,去
直接进入第 7 步。
在其他用户或组中输入 "Administrators"(无引号)
底盒。单击检查名称,然后单击确定。
单击“管理员”,然后单击“确定”。你现在已经给了自己
C:的所有权! (只要您的帐户是管理员,
是。)
单击 "Advanced Security Settings..." window 上的确定返回
到属性 window。你现在应该有一个列表
权限等等之前你只知道如何
您无法查看权限。有进步吗?
您可能需要添加管理员组才能编辑他们的
权限。为此,请单击 "Edit",然后单击 "Add" 并键入
"Administrators"(无引号)在底部框中。然后点击检查名称
然后确定。
单击列表中的管理员并勾选允许
"Full control".
旁边的列
单击“应用”,您可能会收到一堆有关如何操作的错误消息
这不适用于某些文件和文件夹。刚刚好通过
商场。完成后,您应该可以访问您的 C: 驱动器一次
更多!
首先说,这是一个重复的问题,但不是同一个问题。
当我 运行 我的代码时,显示此消息,但没有错误。
#pragma once
using namespace System::Drawing;
ref class rgbConvert
{
private:
System::Drawing::Bitmap^ grayImage;
System::Drawing::Bitmap^ bainaryImage;
System::Drawing::Bitmap^ rgbImage;
int xsize;
int ysize;
bool **BArray;
int **GrayArray;
int **binary;
FILE *fp;
static float coef01 = (float)0.2989;
static float coef02 = (float)0.5870;
static float coef03 = (float)0.1140;
public:
rgbConvert(System::Drawing::Bitmap^ im)
{
rgbImage = im;
xsize = rgbImage->Height;
ysize = rgbImage->Width;
}
rgbConvert(int height, int width)
{
xsize = height;
ysize = width;
}
int** getGrayImageArray ()
{
GrayArray = new int * [xsize];
for (int i = 0; i < xsize; i++ )
{
GrayArray[i] = new int[ysize];
}
for( int i = 0; i < this->xsize; i++ )
{
for ( int j = 0; j < this->ysize; j++ )
{
System::Drawing::Color^ clr = this->rgbImage->GetPixel(j, i);
int pixel = clr->ToArgb();
//int alpha = (pixel >> 24) & 0xff;// no need here
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel ) & 0xff;
int grayC = int(coef01*red + coef02*green + coef03*blue);
GrayArray[i][j] = grayC;
}// inner for*/
}
return GrayArray;
}
void getGrayImageArray (int** gArray)
{
this->GrayArray = gArray;
}
bool** GetBinaryArray( int level )
{
BArray = new bool * [xsize];
for (int i = 0; i < xsize; i++ )
{
BArray[i] = new bool[ysize];
}
binary = new int * [xsize];
for (int i = 0; i < xsize; i++ )
{
binary[i] = new int[ysize];
}
fp=fopen("C:\binary.txt","w");
int grayC;
for ( int xVal = 0; xVal < xsize; xVal++ )
{
for( int yVal = 0; yVal < ysize; yVal++ )
{
grayC = GrayArray[xVal][yVal];
if ( grayC >= level )
{
BArray[xVal][yVal] = true;
binary[xVal][yVal] = 1;
fprintf(fp,"%d",binary[xVal][yVal]);
}
else
{
BArray[xVal][yVal] = false;
binary[xVal][yVal] = 0;
fprintf(fp,"%d",binary[xVal][yVal]);
}
}// inner for*/
}
fclose(fp);
return BArray;
}
};
当我按下 Retry 时,断点显示这一行。
fprintf(fp,"%d",binary[xVal][yVal]);
如果我删除这些行然后在主程序中显示断点。
int main(array<System::String ^> ^args)
{
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Create the main window and run it
Application::Run(gcnew Form1());
return 0;
}
断点显示在 return 0
这一行。
其实这是一个众所周知的问题。我已经解决了这个话题。在我的代码中,我在 C 驱动器中创建了文本文件、docx 文件和图像。但是我的电脑没有访问C盘的权限。 然后我按照以下步骤解决了:
如果您可以访问cmd,您可以在 Vista/Windows 7 使用以下命令:“secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose"(无引号。) 要查看此命令的作用,请转至此处:如何恢复安全性 设置为默认设置?
注意:如果登录后无法访问 cmd,请使用本指南 系统恢复选项。你可以进入命令行,当你 访问“系统恢复选项”屏幕。
这个命令似乎解决了所有权问题 背面,尽管看起来什么都没有改变。转到资源管理器, 右键单击 C: 并转到属性。
转到“安全”选项卡,然后转到“高级”。
转到“所有者”选项卡。现在您应该可以单击“编辑”了。
如果您在下面的列表中没有管理员 "Change owner to:" 然后转到 "Other users or groups"。如果你这样做,去 直接进入第 7 步。
在其他用户或组中输入 "Administrators"(无引号) 底盒。单击检查名称,然后单击确定。
单击“管理员”,然后单击“确定”。你现在已经给了自己 C:的所有权! (只要您的帐户是管理员, 是。)
单击 "Advanced Security Settings..." window 上的确定返回 到属性 window。你现在应该有一个列表 权限等等之前你只知道如何 您无法查看权限。有进步吗?
您可能需要添加管理员组才能编辑他们的 权限。为此,请单击 "Edit",然后单击 "Add" 并键入 "Administrators"(无引号)在底部框中。然后点击检查名称 然后确定。
单击列表中的管理员并勾选允许 "Full control".
旁边的列
单击“应用”,您可能会收到一堆有关如何操作的错误消息 这不适用于某些文件和文件夹。刚刚好通过 商场。完成后,您应该可以访问您的 C: 驱动器一次 更多!