用C程序进行图像分割的方法
2009-03-10 15:56
288 查看
代码如下:
这个程序将一个PICWIDTH*PICHEIGHT的大图片分割成SLICEWID*SLICEHEI大小的一些小图片。
如上图所示的背景图片,其实是一些点的集合,总共多少个点呢?PICWIDTH*PICHEIGHT个
在计算机上存储的时候必然把这些点的信息一行一行地保存到文件中。
当我们想要把这个图象用图中的绿、红两条线切割为几块时,其实就是通过一定的算法取出保存在文件中的点的信息,再拼到一个图片中显示出来。
#include <stdio.h> #include <stdlib.h> #define PICWIDTH 24 /* 原始图片大小:宽*高 */ #define PICHEIGHT 12 #define SLICEWID 4 /* 切割生成的新的小图片的大小:宽*高 */ #define SLICEHEI 3 void display(char *, int, int); int main(int argc, char **argv) { int width = PICWIDTH; int height = PICHEIGHT; int A = (int)(width/SLICEWID); int B = (int)(height/SLICEHEI); char m[PICWIDTH*PICHEIGHT] = ""; /* 存储原来图像的每个象素 */ char temp[SLICEWID * SLICEHEI]; /* 存储切割生成的小图像的每个象素 */ char * py; int row_flag, line_flag, i, j; int indes = 0; int t = 0; if(PICWIDTH%SLICEWID || PICHEIGHT%SLICEHEI) { printf("图像不能被正确分割,请修改设置值!/n原图大小:%d*%d,切图大小:%d*%d/n", PICWIDTH, PICHEIGHT, SLICEWID, SLICEHEI); exit(0); } for(t = 0 ; t < PICWIDTH * PICHEIGHT; t++) m[t] = 65 + t%PICWIDTH + t/PICWIDTH; display(m, PICWIDTH, PICHEIGHT); py = m; for (row_flag = 0; row_flag < B; ++row_flag) { for (line_flag = 0; line_flag < A; ++line_flag) { for (j = 0; j < SLICEHEI; j++) { for (i = 0; i < SLICEWID; i++) { t = (((row_flag * SLICEHEI + j) * PICWIDTH) + i + SLICEWID * line_flag); py = m + t; temp[indes] = *py; indes++; if (indes >= SLICEWID * SLICEHEI) indes = 0; } } display(temp, SLICEWID, SLICEHEI); /* 显示每个分割出来的小图象 */ } } return 0; } void display(char * s, int w, int h) { int i; for(i = 0; i < w * h; i++) { if(!(i%w)) printf("/n"); printf("%c", s[i]); } printf("/n"); } |
如上图所示的背景图片,其实是一些点的集合,总共多少个点呢?PICWIDTH*PICHEIGHT个
在计算机上存储的时候必然把这些点的信息一行一行地保存到文件中。
当我们想要把这个图象用图中的绿、红两条线切割为几块时,其实就是通过一定的算法取出保存在文件中的点的信息,再拼到一个图片中显示出来。
相关文章推荐
- OpenCV学习之采用金字塔方法进行图像分割
- Matlab图像处理学习笔记(九):获取叠加物体的数量并进行分割
- PHP实现对png图像进行缩放的方法(支持透明背景)
- 基于qml创建最简单的图像处理程序(2)-使用c++&qml进行图像处理
- GDB arm-linux交叉编译移植和使用方法(特别是对于正在运行的程序或者段错误的程序进行分析)
- 15-HEVC中的图像的分块分割方法
- Google maps图像分割方法探索与分析
- [转]openCV: 线性插值方法进行图像放大
- 红外目标图像中阈值分割方法的比较与研究
- 对主流的图像分割算法进行比较,并对其部分算法进行优化
- 示例程序006(一)--扫描图像的三种方法
- 模式识别经典算法——Kmeans图像聚类分割(以最短的matlab程序实现)
- 三种方法进行分水岭分割
- OpenCV中对图像数据进行64F和8U转换的方法
- SQL函数类似程序中split的方法,来分割某一个字段
- iOS程序在后台进行任务的方法
- 通过K-均值聚类算法对图像进行分割
- 使用C#进行图像处理的几种方法(转)
- 图像分割的三类方法
- 基于图像分割的立体匹配方法