作者kobe89 (MVP)
看板C_and_CPP
标题[问题] 关於C程式处理影像裁切问题
时间Wed Jun 10 02:16:54 2009
想请问
我现在有一张 275*400 大小的彩色影像
我想要用一个 33*33 大小的罩窗
於影像上任意位置裁切下33*33的彩色影像大小
以下的程式码有错
能帮我改一改吗
------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
int main()
{
unsigned char *image;
unsigned char *picture;
FILE *fp,*fc;
int width=275;
int height=400;
int x=0;//选取点位之X座标
int y=0;//选取点位之Y座标
int i;//行数
int n;//列数
printf("请输入欲裁减位置X:\n");
scanf("%d,&x");
printf("请输入欲裁减位置y:\n");
scanf("%d,&y");
image=new unsigned char[width*height*3];
picture=new unsigned char[(width)*(height)*3];
fp=fopen("nan.raw","rb");
fread(image,sizeof(unsigned char),width*height*3,fp);
for(n=y+1;n<33;n++)
{
for(i=x+1;i<33;i++)
{
picture[33*n+i]=image[275*(y-1)+(x-1)+275*n+i];
}
}
fc=fopen("1.raw","wb");
fwrite(picture,sizeof(unsigned char),(33)*(33)*3,fc);
printf("press any key to continue!!");
fclose(fp);
fclose(fc);
return 0;
}
----------------------------------------------------------------------------
其中 fwrite(picture,sizeof(unsigned char),(33)*(33)*3,fc);
这行的33*33*3会产生问题
想请大家帮忙了
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.103.122
1F:推 wa120:我猜原PO要用Adaboosting 06/10 02:44
2F:推 kvykn:如果是要裁切给adaboost训练,用绘图软体比较快。 06/10 05:11
3F:→ kobe89:我切图的确是要用其他软体.但教授希望我能把程式写出来 06/10 09:00
4F:推 VictorTom:程式有错是compile有error还是执行结果不对?? 06/10 09:24
5F:→ VictorTom:小弟我总是对说程式有错却又不说错在哪的实在很无力Orz 06/10 09:25
6F:→ VictorTom:眼前明显看得到的是scanf()那边不知贴错还写错了@_@" 06/10 09:26
7F:推 zlw:V兄眼睛很利 06/10 09:29
8F:推 VictorTom:因为code还不算长啦, 太长的就直接end了....Orz 06/10 09:34
9F:→ VictorTom:另外, 那个巢状回圈似乎不会跑完33x33个pixel....@_@" 06/10 09:35
10F:→ VictorTom:还有275既然已经是width了, 後面最好别用magic no的写法 06/10 09:36
11F:→ VictorTom:还有既然是彩色影像, 加上fwrite这样的写法, 估计至少要 06/10 09:37
12F:→ VictorTom:有3个channel, 那picture[]=image[]那似乎少copy很多@@ 06/10 09:38
13F:→ kobe89:scanf那边贴错...其实compile和error都没错.图也能跑出来 06/10 12:18
14F:→ kobe89:只是觉得图出来怪怪的 06/10 12:19
15F:推 VictorTom:做影像处理的话, 应该听过一句名言.... 06/10 12:30
16F:→ VictorTom:A picture is worth a thousand words 06/10 12:30
17F:→ VictorTom:觉得图有问题就贴图; 不然小弟我挺好奇您是如何判断出来 06/10 12:32
18F:→ VictorTom:fwrite这行code有问题?? 06/10 12:32
19F:→ VictorTom:纯看code的话, 小弟我推测就和上面zlw大後面推文那样; 06/10 12:33
20F:→ VictorTom:picture[]=image[]那边的回圈没有做满33x33个pixel.... 06/10 12:34
21F:→ VictorTom:每个pixel也没有做满3个channel, 所以应该裁出很怪的结 06/10 12:34
22F:→ VictorTom:果XD 虽然说我不太懂取image[]里怎麽那麽复杂就是Orz 06/10 12:35
23F:推 VictorTom:对了, 既然没有format convert, 用memcpy应该会容易点@@ 06/10 12:50
24F:→ VictorTom:不过用memcpy或直接回圈copy最好都check一下边界问题:) 06/10 12:51