- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 C 程序有一些奇怪的问题。我正在在线学习c 编程并练习一些练习。其中一个是关于一种称为侵 eclipse 的图像技术。想象一下,有一个图像具有两种类型的像素,用“.”表示。或者 '#'。当一个像素被 4 个“#”字符包围时,它会被保留,而在其他情况下,它会被一个“.”替换。特点。输入是应用侵 eclipse 的次数 N,H 和 L 图像的高度和宽度,以及由“.”组成的字符矩形。和“#”字符。例如输入:
1 //N
4 //H
4 //L
....
.###
####
####
and the output is
....
....
.##.
....
问题是在线编译器(测试一系列随机输入)拒绝我的代码,告诉我内存溢出
这是代码
#include <stdlib.h>
#include <stdio.h>
//test wether a pixel is surrounded by 4 '#' characters
char test(int i, int j,int H, int L, char c[H][L]){
int k=0;
int l=0;
char result='-';
if((i==0)||(i==H-1)||(j==0)||(j==L-1)){
result='+';
}
else{
for(k=0;k<2;k++){
for(l=0;l<2;l++){
if(c[i+(1-2*k)*l][j+(1-2*k)*(1-l)] =='.'){
result='+';
break;
}
else{
}
}
if(result=='+'){break;}
else{}
}
}
return result;
}
//The erode function that replaces the image by one in which '#' characters are replaced by '.' characters when it is not surrounded by 4 '#' characters
char **erode(int H, int L, char c[H][L]){
int i;
int j;
char ch='-';
char **d = malloc (H * sizeof (int *));
for (i = 0; i < H; i++) {
d[i] = malloc (L * sizeof (int));
}
i=0;
for (i=0;i<H;i++)
{
for (j=0;j<L;j++)
{
ch=test(i,j,H,L,c);
if(ch=='+'){
d[i][j]='.';
}
else{
d[i][j]=c[i][j];
}
ch='-';
}
}
for (i= 0; i < H; i++) {
free(d[i]);
}
free(d);
return d;
}
//here are computed the inputs and outputs
int main()
{
int i=0;
int j=0;
int N;
int H;
int L;
char o;
scanf("%d",&N);
scanf("%d",&H);
scanf("%d",&L);
scanf("%c",&o);
char c[H][L];
char d[H];
char ero[H][L];
while (i<H)
{
while (j<L)
{
scanf("%c",&c[i][j]);
j++;
}
j=0;
scanf("%c",&d[i]);
i++;
}
int l;
int m;
int n;
for(l=0;l<N;l++){
for (i=0;i<H;i++)
{
for (j=0;j<L;j++)
{
ero[i][j]=erode(H,L,c)[i][j];
}
}
for (m=0;m<H;m++)
{
for (n=0;n<L;n++){
c[m][n]=ero[m][n];
}
}
}
for (i=0;i<H;i++)
{
for (j=0;j<L;j++){
printf("%c",c[i][j]);
}
printf("\n");
}
}
(该代码远非最佳,因为我尝试对其进行调试并使某些内容真正分解)
有人知道为什么我会收到此消息错误吗?
最佳答案
这可能是因为在您的 erode
函数中,您多次使用 malloc
但从未调用 free
。实际上,您在 main 的三重循环内调用了erode
。这表明它可能被多次调用,但由于分配的内存永远没有被释放,因此您的内存完全有可能耗尽,这解释了错误消息。当您不再需要内存时,请更加小心地使用 free
释放内存。
关于c - C语言图像腐 eclipse 技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639807/
在浏览 OpenCV 源代码时,我注意到对于不止一次的迭代,它只会创建一个更大尺寸的内核并进行一次迭代。 所以我的问题是,如果我们采用 3x3 大小的 SQUARE 结构元素并在三个迭代中对其进行扩张
我无法理解 scipy 的 binary_erosion 函数。 from scipy.ndimage import binary_erosion a = np.zeros([12,12]) a[1:
我有这个代码。 #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/highgui/highgui.hpp" #include "
我正在对 Mat 应用腐 eclipse 操作,但速度非常慢。 因为在 OpenCV 中,您可以通过两种不同的方式应用它(使用 morphologyEx 和使用 erode)。 我正在测量(大约)它的
二值图像上的腐 eclipse 会减少白色区域,而膨胀会增加它。我使用 OpenCV 在彩色图像上进行了相同的尝试,并得到了类似的结果。我尝试对二进制 jpeg 图像进行侵 eclipse /膨胀。由
我在安卓设备上同时使用 OpenCV 和 FastCV 来执行一些图像处理操作。对帧进行阈值处理后,我得到了一张二值图像,在感兴趣区域附近存在适量的黑白噪声。 对图像进行腐 eclipse ,然后进行
如果用 zeros(3,3) 结构元素腐 eclipse 图像,它应该全为 1,但在 OpenCV 的情况下,它返回图像。类似地,用 zeros(3,3) 结构元素对图像进行膨胀会返回图像本身,而不是
我是图像处理新手,正在尝试编写一种用于腐 eclipse 和膨胀的自定义方法。然后我尝试将我的结果与 OpenCV 腐 eclipse 和膨胀函数结果进行比较。我对输入图像进行一处零填充,然后将内核与
我已经尝试过并且有效。如果迭代次数足够大,就会出现显着的变化。 我不明白的是它是如何完成的。 是否有默认的内核形状和大小?可能是 MORPH_RECT 和 (2,2)? 最佳答案 从这里开始Link
我有一个很长的项目:一个在浏览器中运行并使用 SVG 和 Javascript 的基本矢量图形工具(也许你已经在其他地方看到过这些)。该工具只有非常有限的一组功能,因为受众受到限制并且目的非常具体,实
我正在为 OpenGL 编写一个简单的位图字体渲染器,我也想渲染一些 Unicode。然而,在许多字体中,一些字符丢失并呈现为正方形。这些因此浪费了我纹理中的空间,我想摆脱它们。有没有WinAPI函数
我是一名优秀的程序员,十分优秀!