⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter.c

📁 filtervc.rar
💻 C
字号:
/*******************************************************************/
/*

Demo-Software for smart cameras from Vision Components
------------------------------------------------------

Program: Klaus Schneider,  VC


Program Description:
--------------------

This program shows how you can use different kind of filters.
Implemented are for example:

avgm (&pic1, &pic2, a, b);
sobel(&pic1, &pic2);

It also gives the calcultion time for every filter.

*/
/*******************************************************************/

#include <vcrt.h>
#include <vclib.h>
#include <macros.h>
#include <sysvar.h>

/*******************************************************************/

void main()
{
  int   ms, res=0, dx, dy, x, y, newPage, newScreen, *itemp;
  long  *ltemp;
  image src, dest;


  /* define area in the center of the screen */
  dx = 512;
  dy = 512;
  x  = (ScrGetColumns-dx)/2;
  y  = (ScrGetRows   -dy)/2;


  /* define source area */
  ScrSetLogPage(ScrGetPhysPage);
  ImageAssign(&src, ScrByteAddr(x,y), dx, dy, ScrGetPitch);


  /* allocate new screen page */
  newPage=(int)DRAMScreenMalloc(); 

  /* Image display addresses have to be in alignments of 1024 */ 
  newScreen=(newPage&0xFFFFFC00) + 1024;

  /* initialize new screen page to 0 */
  ScrSetLogPage(newScreen);
  ImageAssign(&dest, ScrByteAddr(0,0), ScrGetColumns, ScrGetRows, ScrGetPitch);
  set(&dest,0);

  /* define destination area */
  ScrSetLogPage(newScreen);
  ImageAssign(&dest, ScrByteAddr(x,y), dx, dy, ScrGetPitch);


  /* take image */
  tpict();

  print("\nCalculation Time for a %d x %d area",dx,dy);

  print("\nPress any key - "); getchar();
  ms = getvar(MSEC);
  res=mean(&src);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Mean:      t=%dms mean=%d",ms,res);


  print("\nPress any key - "); getchar();
  ms = getvar(MSEC);
  res=variance(&src);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Variance:  t=%dms variance=%d",ms,res);


  print("\nPress any key - "); getchar();
  ms = getvar(MSEC);
  res=(int)arx(&src,128);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("arx:       t=%dms pixels above threshold=%d",ms,res);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  itemp=(int *)sysmalloc(100000,2);
  ms = getvar(MSEC);
  rlcmk(&src, 128, (long)itemp, 100000);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("RLC:       t=%dms",ms);
  sysfree(itemp);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ltemp=(long *)sysmalloc(2*256,2);
  ms = getvar(MSEC);
  histo(&src, ltemp);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Histogram: t=%dms",ms);
  sysfree(ltemp);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  sobel(&src, &dest);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Sobel:     t=%dms",ms);

  ScrSetDispPage(newScreen);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  binarize(&src, &dest, 128, 0, 255);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Binarize:  t=%dms",ms);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  and2(&src, &dest, &dest);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("AND:       t=%dms",ms);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  laplace(&src, &dest);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Laplace:   t=%dms",ms);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  subsample(&src, &dest, 2, 2);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Subsample: t=%dms",ms);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  avgm(&src, &dest,8,8);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Avgm:      t=%dms",ms);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  robert(&src, &dest);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("Robert:    t=%dms",ms);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  mn(&src, &dest);
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("mn, dil:   t=%dms",ms);


  print("\nPress any key - "); getchar();
  set(&dest,0);
  ms = getvar(MSEC);
  cjpeg_d(&src, 20, dest.st, (long)(dx*dy));
  ms = getvar(MSEC)-ms;
  if(ms<0) ms+=1000;
  print("jpeg:      t=%dms",ms);


  print("\nPress any key for live image"); getchar();
  DRAMPgFree(newPage);
  ScrSetDispPage(ScrGetCaptPage);

  vmode(vmLive); 
}

/*******************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -