亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? figure.cpp

?? 圖像處理源代碼VC
?? CPP
字號:
/****************************************************************************
* File name :figure.c                                                       *
* Author  : Peng Chun Ping and Ai Hao Jun                                   *
* Date    : December 24,1995                                                *
* Function: This file is an included file in p.c, in which we provide the   *
*           seven module of mathmatic Morphics' processes.                  *
* Collector:jiang **              4/96                                      *
****************************************************************************/
#include "stdafx.h"

#include <math.h>
#include <stdlib.h>

#define Bright 255
#define Dark 0
#define Green 32


#define TempleteValue 1
int TempleteSize=7;
#define TempleteValue1 1
#define TempleteValue2 2

#include "comapi.h"

/*************      fspace_2d    ***************************************/
/*  To allocation a 2_dimension dynamic array  */
//void **fspace_2d(int row,int col,int lenth);
/*******************************  ffree_2d   ****************************/
/*  To free a 2_dimension dynamic array  */
//void ffree_2d(void **a,int row);


/* bivalue the image */
void bivalue(unsigned char **array,int row,int col)
{
  int r,c;
  for(r=0;r<row;r++)
  for(c=0;c<col;c++)
  {
    if(array[r][c]!=0)
      array[r][c]=255;
  }
  return;
}


void Expand(unsigned char **Image,  unsigned char **BufferImage,
				unsigned char Templete[7][7], int row,int col)
{
//  unsigned char **BufferImage;
  int r,c,i,j;
/* create the buffer image */
//  BufferImage=(unsigned char **)fspace_2d(row,col,sizeof(unsigned char));
//  for(r=0;r<row;r++)
//  for(c=0;c<col;c++)
//   BufferImage[r][c]=0;
/* expand the image and put the result in buffer image */
  for(r=TempleteSize/2;r<row-TempleteSize/2;r++)
  for(c=TempleteSize/2;c<col-TempleteSize/2;c++)
//      if(*(*(Image+r)+c)!=Dark){
    if(Image[r][c]!=Dark){
	   for(i=0;i<TempleteSize;i++)
		for(j=0;j<TempleteSize;j++){
	     if(Templete[i][j]==TempleteValue)
	       BufferImage[i+r-TempleteSize/2][c+j-TempleteSize/2]=Bright;
      }
/*	    else
	    *(*(BufferImage+i+r-TempleteSize/2)+c+j-TempleteSize/2)
	    =*(*(Image+i+r-TempleteSize/2)+c+j-TempleteSize/2);*/
    }

//    for(r=TempleteSize/2;r<row-TempleteSize/2;r++)
//    for(c=TempleteSize/2;c<col-TempleteSize/2;c++)
//    {
///*      if(*(*(Image+r)+c)==Dark&&BufferImage[r][c]!=Dark)
//      *(*(Image+r)+c)=Green;
//      else*/
//      Image[r][c]=*(*(BufferImage+r)+c);
//      }
//  ffree_2d((void **)BufferImage,row);/* release the buffer image */
//  return ;
}
/* reflect the templete */
void Reflect(unsigned char Templete[7][7])
{
  int r,c;
  int TempleteSize=7;
  unsigned char **temp;
  /* create temporary memory for templete */
  temp=(unsigned char **)fspace_2d(TempleteSize,TempleteSize,1);
  for(r=0;r<TempleteSize;r++)
  for(c=0;c<TempleteSize;c++)
  temp[r][c]=0;
  for(r=0;r<TempleteSize;r++)
  for(c=0;c<TempleteSize;c++)
	 temp[r][c]=Templete[TempleteSize-1-r][TempleteSize-1-c];
  for(r=0;r<TempleteSize;r++)
  for(c=0;c<TempleteSize;c++)
	 Templete[r][c]=temp[r][c];
  ffree_2d((void **)temp,TempleteSize);/* release the temporary memory */
  return ;
}
/* put the image into contray value */
void Contrary(unsigned char **Image,int row,int col)
{
  int r,c;
  for(r=0;r<row;r++)
  for(c=0;c<col;c++){
    if(Image[r][c]==Dark)
	   Image[r][c]=Bright;
	 else
      Image[r][c]=Dark;
  }
}

/* rot the image */
void Rot(unsigned char **Image,  unsigned char **OutImage,
				unsigned char Templete[7][7], int row,int col )
{
//  int r,c;
  unsigned char **temp;
  temp=(unsigned char **)fspace_2d(row,col,1);
  for(int i=0;i<row;i++)
  for(int j=0;j</*/row/*/col;j++)
    temp[i][j]=Image[i][j];

  Contrary(temp,row,col);/* put the image into contray value */
  Reflect(Templete);/* reflect the templete */
  Expand(temp,OutImage,Templete,row,col);/* expand the image */
  bivalue(OutImage,row,col);
  Contrary(OutImage,row,col);/* put the image into contray value */
  ffree_2d((void **)temp,row);/* release the buffer image */
}

void Open(unsigned char **Image,  unsigned char **OutImage,
				unsigned char Templete[7][7], int row,int col)
{
/* create the buffer image */
  unsigned char **BufferImage;
  BufferImage=(unsigned char **)fspace_2d(row,col,sizeof(unsigned char));

  Rot(Image,BufferImage,Templete,row,col);/* rot the image */
  Expand(BufferImage,OutImage,Templete,row,col);/* expand the image */
  bivalue(OutImage,row,col);

  ffree_2d((void **)BufferImage,row);/* release the buffer image */
}

void Close(unsigned char **Image,  unsigned char **OutImage,
				unsigned char Templete[7][7], int row,int col)
{
  unsigned char **BufferImage;
  BufferImage=(unsigned char **)fspace_2d(row,col,sizeof(unsigned char));

  Expand(Image,BufferImage,Templete,row,col);/* expand the image */
  bivalue(BufferImage,row,col);
  Rot(BufferImage,OutImage,Templete,row,col);/* rot the image */

  ffree_2d((void **)BufferImage,row);/* release the buffer image */
}

void Hit(unsigned char **Image,  unsigned char **OutImage,
			unsigned char Templete[7][7], int row,int col)
{
  unsigned char Templete1[7][7],Templete2[7][7];
  unsigned char **BufferImage;
  int r,c;

  /* assign value to the separate templete */
//  Templete1=(unsigned char **)fspace_2d(TempleteSize,TempleteSize,sizeof(unsigned char));
//  Templete2=(unsigned char **)fspace_2d(TempleteSize,TempleteSize,sizeof(unsigned char));

  for(r=0;r<TempleteSize;r++)
  for(c=0;c<TempleteSize;c++)
    if(Templete[r][c]==TempleteValue1)
	   Templete1[r][c]=TempleteValue;
    else if(Templete[r][c]==TempleteValue2)
	   Templete2[r][c]=TempleteValue;
    else{
	   Templete1[r][c]=0;
	   Templete2[r][c]=0;
	 }

  /* create the buffer image */
  BufferImage=(unsigned char **)fspace_2d(row,col,sizeof(unsigned char));

/*  for(r=0;r<row;r++)
  for(c=0;c<col;c++)
	 *(*(BufferImage+r)+c)=*(*(Image+r)+c);
*/

  Rot(Image,BufferImage,Templete1,row,col); /* rot the image with No.1 templete */
  Reflect(Templete2);/* reflect the No.2 templete */
  Expand(BufferImage,OutImage,Templete2,row,col);/* expand the buffer image */
  bivalue(OutImage,row,col);/* bivalue the image */

  for(r=0;r<row;r++)/* substract the buffer image out of image */
  for(c=0;c<col;c++){
    if(Image[r][c]==BufferImage[r][c]&&Image[r][c]!=Dark)
       OutImage[r][c]=Dark;
    }
/* release the meory */
  ffree_2d((void **)BufferImage,row);
//  ffree_2d((void **)Templete1,TempleteSize);
//  ffree_2d((void **)Templete2,TempleteSize);
}

/* slim the image */
void Slim(unsigned char **Image,  unsigned char **OutImage,
			 unsigned char Templete[7][7], int row,int col)
{
  int r,c;
/* hit the Original image */
  Hit(Image,OutImage,Templete,row,col);

/* substract the hit image from original image */
  for(r=0;r<row;r++)
  for(c=0;c<col;c++)
     if(OutImage[r][c]==Image[r][c])
		 OutImage[r][c]=Dark;
}

void Fat(unsigned char **Image,  unsigned char **OutImage,
    		 unsigned char Templete[7][7], int row,int col)
{
  int r,c;
/* hit the Original image */
  Hit(Image,OutImage,Templete,row,col);

/* add the hit image to original image */
  for(r=0;r<row;r++)
  for(c=0;c<col;c++)
	  if(OutImage[r][c]!=0 && Image[r][c]==0)
       ;    
     else
		 OutImage[r][c]=Image[r][c];
}

/********************END OF FIGURE.C*************************************/






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品911| 欧美一区二区在线看| 欧美综合亚洲图片综合区| 91麻豆精品国产综合久久久久久| 久久久久久免费毛片精品| 亚洲第一久久影院| 成人永久免费视频| 日韩免费观看2025年上映的电影| 综合欧美亚洲日本| 国产一区视频导航| 欧美精品一卡二卡| 亚洲男人电影天堂| 成人妖精视频yjsp地址| 欧美精品一区二区三区蜜桃视频| 亚洲高清免费一级二级三级| 99re这里都是精品| 国产精品美女久久久久av爽李琼| 国产主播一区二区三区| 日韩一区二区在线观看视频 | 日本一区二区免费在线观看视频 | 亚洲777理论| 91免费国产在线| 欧美国产一区二区| 国产在线播放一区| 2020国产精品自拍| 九九精品视频在线看| 欧美一区二区成人| 日韩精品乱码免费| 制服丝袜成人动漫| 日韩精品亚洲一区二区三区免费| 色欧美日韩亚洲| 一区2区3区在线看| 欧美系列亚洲系列| 亚洲福中文字幕伊人影院| 日本道在线观看一区二区| 亚洲制服丝袜在线| 欧美日韩国产综合视频在线观看| 视频一区二区三区在线| 日韩一区和二区| 精品影院一区二区久久久| 精品久久国产老人久久综合| 国产乱码精品1区2区3区| 久久久久久久久久久久久夜| 国产91精品久久久久久久网曝门| 国产精品色婷婷久久58| 91视频com| 亚洲bt欧美bt精品| 日韩欧美精品在线| 国产另类ts人妖一区二区| 欧美激情在线免费观看| 色综合天天综合色综合av| 亚洲综合一区二区三区| 欧美精品日韩精品| 国产精品996| 一区二区三区免费看视频| 91精品国产乱码| 丁香婷婷综合网| 有码一区二区三区| 欧美一级午夜免费电影| 国产大陆精品国产| 日韩一区日韩二区| 在线不卡的av| 国产不卡视频一区二区三区| **性色生活片久久毛片| 制服丝袜激情欧洲亚洲| 成人福利电影精品一区二区在线观看| 亚洲人成在线观看一区二区| 欧美一卡二卡在线| 成人免费视频一区| 午夜精品一区二区三区电影天堂| 欧美精品一区二区三区四区| 色狠狠综合天天综合综合| 奇米影视7777精品一区二区| 中文av一区二区| 欧美剧在线免费观看网站| 国产黑丝在线一区二区三区| 亚洲成国产人片在线观看| 国产亚洲欧美一级| 6080日韩午夜伦伦午夜伦| 国产成a人亚洲精品| 日本欧美久久久久免费播放网| 国产精品久久久久久久久免费樱桃| 欧美日韩一区二区在线观看视频| 国产91精品免费| 国产91清纯白嫩初高中在线观看| 亚洲国产欧美在线| 国产精品久久久久久久久果冻传媒| 91精品国产欧美日韩| 欧洲日韩一区二区三区| 风间由美一区二区三区在线观看| 午夜影院在线观看欧美| 亚洲欧洲另类国产综合| 久久综合九色综合97婷婷女人| 欧美色手机在线观看| 99视频在线精品| 国产传媒久久文化传媒| 美女任你摸久久| 日本在线播放一区二区三区| 亚洲免费av高清| 中文字幕一区二区三区在线播放| 精品国产网站在线观看| 91精品国产乱| 欧美一区三区四区| 欧美视频一二三区| 欧美在线观看一区| 欧美性欧美巨大黑白大战| 在线看一区二区| 91久久精品一区二区二区| jlzzjlzz欧美大全| 99久久精品99国产精品| www.在线成人| 91视频.com| 欧美专区在线观看一区| 欧美综合久久久| 欧美精品久久久久久久多人混战 | 亚洲精品视频在线| 亚洲人成小说网站色在线| 亚洲三级电影全部在线观看高清| 国产精品黄色在线观看| 中文字幕在线一区| 国产精品久久久久久久久快鸭| 综合久久一区二区三区| 亚洲精品久久7777| 亚洲国产人成综合网站| 日韩影视精彩在线| 毛片一区二区三区| 国产精品亚洲人在线观看| 国产成人精品免费看| 91免费看视频| 91麻豆精品国产91久久久久久久久 | 亚洲亚洲精品在线观看| 亚洲综合精品自拍| 日韩国产精品大片| 精品一区二区三区免费毛片爱 | 国产精品免费av| 中文字幕一区二区三区在线观看| 亚洲嫩草精品久久| 午夜精品久久久久影视| 久久国内精品自在自线400部| 久久不见久久见免费视频1| 国产精品一品二品| 日本久久精品电影| 91精品久久久久久久99蜜桃| 久久女同精品一区二区| 中文字幕一区日韩精品欧美| 亚洲成人av电影| 国产福利视频一区二区三区| 91网站在线播放| 7777精品伊人久久久大香线蕉最新版 | 久久精品99国产国产精| 不卡av在线网| 欧美一级夜夜爽| 亚洲丝袜自拍清纯另类| 强制捆绑调教一区二区| 丁香婷婷综合激情五月色| 欧美精品v日韩精品v韩国精品v| 久久午夜免费电影| 亚洲狠狠爱一区二区三区| 国产美女av一区二区三区| 日本精品视频一区二区| 久久午夜色播影院免费高清| 一区二区在线观看视频| 极品尤物av久久免费看| 91高清视频在线| 久久精品夜色噜噜亚洲a∨| 亚洲午夜久久久久| 大陆成人av片| 欧美日韩国产系列| 亚洲女与黑人做爰| 国产成人精品免费网站| 日韩一区二区电影网| 一区二区三区中文字幕| 成人福利视频在线看| 欧美mv日韩mv国产网站| 亚洲国产精品精华液网站| 国产馆精品极品| 精品裸体舞一区二区三区| 性做久久久久久免费观看| 99久久精品一区二区| 久久伊人蜜桃av一区二区| 免费看日韩精品| 欧美视频一区二区| 一区二区三区加勒比av| 成人亚洲精品久久久久软件| 精品处破学生在线二十三| 日韩专区中文字幕一区二区| 日本韩国欧美国产| 国产精品久久久久aaaa| 国产a久久麻豆| 久久久久高清精品| 狠狠色丁香久久婷婷综合_中 | 中文字幕中文字幕一区二区| 韩国成人精品a∨在线观看| 日韩一区二区中文字幕| 日韩不卡一二三区| 欧美一级黄色大片| 美女精品自拍一二三四| 日韩精品最新网址| 精品一区二区三区久久久| 精品乱码亚洲一区二区不卡|