?? filter.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 + -