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

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

?? grabber.c

?? 以feith智能嵌入式相機為終端的linux-windows系統間通信
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************

	FILE  :  GRABBER.C                   TYP ( PROG/UNIT ) :  UNIT
	 
	AUTOR :   rw
		
	DATE :   02.03.2004
		  
			 Description :
			 - WIN Demo for CANCam
***************************************************************************/
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <time.h>
#include "windem32.h"   
#include "Grabber.h"		
#include "CanCam.h"		


extern char szAppName[];
extern int width,height;
extern BYTE sensor_type, trigger_role, hardware_version, wb;
extern int vPos,hPos;
extern WORD img_cnt;
extern DWORD fpga_mem_offset;
extern BYTE camera;

extern BYTE read_fpga(BYTE cam_nr,WORD reg, DWORD *val);
extern BYTE write_fpga(BYTE cam_nr,WORD reg, DWORD val);

WORD max_pixel[1024];

PBITMAPINFO BitmapInfo;
BYTE *Prgb;	


BOOL initcancam(HWND hWnd,char *ip, WORD port)
{
   BOOL    ret = TRUE;
	HCURSOR OldCursor;
	BYTE    error;
	char e_str[150],ss[20];
	WORD x1,x2,y1,y2;
	
	OldCursor = SetCursor(LoadCursor(NULL, IDC_WAIT));
	set_status_bar(0,"Init CanCam .......");
	
	error = init_cancam(camera,ip,port);				//Init CANCam
	if(error)
	{
		sprintf(e_str,"Failure initializing CanCam ERROR-NR. %d",error);
		MessageBox(NULL,e_str,szAppName,MB_OK | MB_ICONSTOP);
		ret = FALSE;
		sprintf(e_str,"%s",szAppName);
	}
	else
	{
		x1 = (1288/2) - (1280/2);
		x2 = (1288/2) + (1280/2) - 1;
		y1 = (1024/2) - (1024/2);
		y2 = (1024/2) + (1024/2) - 1;

		error = set_video_window(camera,x1,y1,x2,y2);
		if(error)
		{
		sprintf(e_str,"Failure setting video window ERROR-NR. %d",error);
		MessageBox(NULL,e_str,szAppName,MB_OK | MB_ICONSTOP);
		ret = FALSE;
		sprintf(e_str,"%s",szAppName);
		}
		get_sensor_type(camera,&sensor_type, &trigger_role);
		get_hardware_version(camera,&hardware_version);
		switch (sensor_type)
		{
		case 0:
			switch (trigger_role)
			{
				case 0:	strcpy(ss,"LM9638 Master-V");break;
				case 1: strcpy(ss,"LM9638 Slave I-V");break;
				case 2: strcpy(ss,"LM9638 Slave E-V"); break;
				default:strcpy(ss,"LM9638 ??-V"); break;
			}
			break;

		case 1:
			switch (trigger_role)
			{
				case 0:	strcpy(ss,"LM9648 Master-V");break;
				case 1: strcpy(ss,"LM9648 Slave I-V");break;
				case 2: strcpy(ss,"LM9648 Slave E-V"); break;
				default:strcpy(ss,"LM9648 ??-V"); break;
			}
			break;
		case 9:
			strcpy(ss,"Grabber-V");
			break;

		default:
			strcpy(ss,"??");
			break;
		}
		
		sprintf(e_str,"%s - %s%d",szAppName,ss,hardware_version);
	}
	
	
	SetWindowText(hWnd, e_str);
	set_status_bar(0,"");
	SetCursor(OldCursor);
	
	return ret;
}



HPALETTE SetBMPPalette(HDC hDC,HWND hWnd, HPALETTE *hPal)
{
	
	int	  i,wNumColors;
	LPLOGPALETTE     lpPal;
	HANDLE           hLogPal;
	HPALETTE	  OldPal=NULL;
	
	wNumColors=256;
	
	hLogPal = GlobalAlloc (GHND, sizeof (LOGPALETTE) +
		sizeof (PALETTEENTRY) * wNumColors);
	
	lpPal = (LPLOGPALETTE) GlobalLock (hLogPal);
	
	lpPal->palVersion    = 0x300;
	lpPal->palNumEntries = wNumColors;
	
	for (i = 0;  i < wNumColors;  i++)
	{
		lpPal->palPalEntry[i].peRed   = i;
		lpPal->palPalEntry[i].peGreen = i;
		lpPal->palPalEntry[i].peBlue  = i;
		lpPal->palPalEntry[i].peFlags = 0;
	}
	
	*hPal = CreatePalette (lpPal);
	
	if (!*hPal)
	{
		MessageBox(hWnd, "Create palette failure.", szAppName,
			MB_OK | MB_ICONSTOP);
		return(OldPal);
	}
	
	OldPal = SelectPalette(hDC, *hPal, 0);
	RealizePalette(hDC);
	
	GlobalUnlock (hLogPal);
	GlobalFree   (hLogPal);
	
	return(OldPal);
}


GLOBALHANDLE create_bitmap_header(void)
{
	int i;
	LPSTR pLookUp;
	GLOBALHANDLE hBitmap_Info;
	int isize; 

	width  = 1280;
	height = 1024;
	
	isize = (width * (int)3) * height;
	hBitmap_Info = GlobalAlloc(GHND, sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD) + isize);
	if(hBitmap_Info)
	{
		BitmapInfo = (PBITMAPINFO) GlobalLock(hBitmap_Info);
		BitmapInfo->bmiHeader.biSize = (long) sizeof(BITMAPINFOHEADER);
		BitmapInfo->bmiHeader.biWidth = 1280;
		BitmapInfo->bmiHeader.biHeight = 1024;
		BitmapInfo->bmiHeader.biPlanes = 1;
		BitmapInfo->bmiHeader.biBitCount = 8;
		BitmapInfo->bmiHeader.biSizeImage = ((DWORD)BitmapInfo->bmiHeader.biWidth *	(DWORD)BitmapInfo->bmiHeader.biHeight);
		BitmapInfo->bmiHeader.biXPelsPerMeter = 0;
		BitmapInfo->bmiHeader.biYPelsPerMeter = 0;
		BitmapInfo->bmiHeader.biClrUsed = 256;
		BitmapInfo->bmiHeader.biClrImportant = 256;
		
		pLookUp = (LPSTR)BitmapInfo->bmiColors;
		for (i=0; i<256; i++)
		{
			*pLookUp++ = (BYTE)i;
			*pLookUp++ = (BYTE)i;
			*pLookUp++ = (BYTE)i;
			*pLookUp++ = 0;
		}

		Prgb = (BYTE *)BitmapInfo + sizeof(BITMAPINFOHEADER) + (int)256 * sizeof(RGBQUAD);
		return(hBitmap_Info);
	}
	return(NULL);
}


PBITMAPINFO get_bitmap_info(void)
{
	return(BitmapInfo);
}

void make_rgb(BYTE *rgb,BYTE *cfa[],BYTE *red[], BYTE *green[], BYTE *blue[])
{
	int x,y,cnt_green=0, cnt_red=0, cnt_blue=0;
	BYTE c;
	BYTE *phelp;
	BYTE *r,*g,*b;
	FILE *hfile;
	int i,j;
	char l_str[30],s_str[10000];
	DWORD c_green=0, c_red=0, c_blue=0;
	float wb_red, wb_blue, avg_green, avg_red, avg_blue;

  // replicate pixels from the initial buffer into 
  // red, blue and green matrices...               

	
/*	if ((hfile = fopen("pixvalue.txt","wt" )) != NULL)
	{
		for(i = 0;i < 1024;i++)
		{
			sprintf(l_str,"Zeile %4d:",i);
			fwrite(l_str,strlen(l_str),1,hfile);
			s_str[0] = '\0';
			for(j = 0;j < 1280;j++)
			{
				sprintf(l_str,"%x:",*(cfa[i]+j));
				strcat(s_str,l_str);
			}
			fwrite(s_str,strlen(s_str),1,hfile);
			sprintf(l_str,"\n");
			fwrite(l_str,strlen(l_str),1,hfile);
		}

		fclose(hfile);
	}
*/
/*	if ((hfile = fopen("pixvalue.dat","wb" )) != NULL)
	{
		for(i = 0;i < 1024;i++)
			fwrite(cfa[i],1280,1,hfile);
		fclose(hfile);
	}
*/


	
	for( y = 0; y < height; y += 2 )
    {
        for( x = 0; x < width; x += 2 )
        {
            // grGRgrGR  :=  ggGGggGG  rrRRrrRR  bbBBbbBB 
            // bgBGbgBG  :=  ggGGggGG  rrRRrrRR  bbBBbbBB 
            // GRGRGRGR  :=  ...                          
				c = *(cfa[y] + x);
            *(green[y] + x)     = c;//*(cfa[y] + x);
            *(green[y] + x+1)   = c;//*(cfa[y] + x);
			c_green += c;
			cnt_green++;

				c = *(cfa[y+1] + x+1);
            *(green[y+1] + x)   = c;//*(cfa[y+1] + x+1);
            *(green[y+1] + x+1) = c;//*(cfa[y+1] + x+1);
			c_green += c;
			cnt_green++;

				c = *(cfa[y] + x+1);
            *(red[y] + x) = c;
            *(red[y] + x+1) = c;
            *(red[y+1] + x) = c;
            *(red[y+1] + x+1) = c;
			c_red += c;
			cnt_red++;

				c = *(cfa[y+1] + x);
            *(blue[y] + x) = c;
            *(blue[y] + x+1) = c;
            *(blue[y+1] + x) = c;
            *(blue[y+1] + x+1) = c;
			c_blue += c;
			cnt_blue++;
        }
    }

	avg_green = ((float)c_green/cnt_green);		//get average of green
	avg_red = ((float)c_red/cnt_red);			//get average of red
	avg_blue = ((float)c_blue/cnt_blue);		//get average if blue
	
	wb_blue = (float)avg_blue/(float)avg_green; //calculate white balancing factor for blue
	wb_red = (float)avg_red/(float)avg_green;	//calculate white balancing factor for red

	// compute the interpolated red data 

    for ( y = 2; y < height-2; y += 2 )
    {
        for ( x = 3; x < width-2; x += 2 )
        {
            // get the left, bottom, corner red pixels 

            unsigned char r, rl, rb, rc;

            r  = *(cfa[y] + x);
            rl = *(cfa[y] + x-2);
            rb = *(cfa[y+2] + x);
            rc = *(cfa[y+2] + x-2);

            *(red[y] + x-1)   = (r + rl          ) / 2;
            *(red[y+1] + x)   = (r      + rb     ) / 2;
            *(red[y+1] + x-1) = (r + rl + rb + rc) / 4;
        }
    }



	  // compute the interpolated green data 

    for ( y = 2; y < height-2; y += 2 )
    {
        for ( x = 3; x < width-2; x += 2 )
        {
            // get the left, right, top, bottom green pixels 

            unsigned char gl, gr, gt, gb;

            gl = *(cfa[y] + x-1);
            gr = *(cfa[y] + x+1);
            gt = *(cfa[y-1] + x);
            gb = *(cfa[y+1] + x);

            *(green[y] + x) = (gl + gr + gt + gb) / 4;
        }
    }

    for ( y = 3; y < height-2; y += 2 )
    {
        for ( x = 2; x < width-2; x += 2 )
        {
            // get the left, right, top, bottom green pixels 

            unsigned char gl, gr, gt, gb;

            gl = *(cfa[y] + x-1);
            gr = *(cfa[y] + x+1);
            gt = *(cfa[y-1] + x);
            gb = *(cfa[y+1] + x);
      
            *(green[y] + x) = (gl + gr + gt + gb) / 4;
        }
    }


   for ( y = 3; y < height-2; y += 2 )
    {
        for ( x = 2; x < width-2; x += 2 )
        {
            // get the right, top, corner blue pixels 
			   unsigned char b, br, bt, bc;

            b  = *(cfa[y] + x);
            br = *(cfa[y] + x+2);
            bt = *(cfa[y-2] + x);
            bc = *(cfa[y-2] + x+2);

            *(blue[y] + x+1) = (b + br            ) / 2;
            *(blue[y-1] + x) = (b        + bt     ) / 2;
            *(blue[y-1] + x+1) = (b + br + bt + bc) / 4;
        }
    }

	phelp = rgb;
	r = red[0];
	g = green[0];
	b = blue[0];

	for( y = 0; y < height; y++)
    {
        for( x = 0; x < width; x++)
        {
			   
			if(wb)
			{
				*phelp++ = (BYTE)((*b++ /wb_blue));	// adjust blue

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线观看国产| 欧美在线观看视频一区二区 | 七七婷婷婷婷精品国产| 成人国产一区二区三区精品| 欧美性猛交xxxx黑人交| 中文字幕精品综合| 国产一级精品在线| 日韩欧美国产电影| 日本女优在线视频一区二区| 欧美日韩精品一区视频| 亚洲欧美国产高清| 菠萝蜜视频在线观看一区| 国产欧美日韩激情| 国产精品亚洲综合一区在线观看| 欧美大片在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩国产在线观看| 亚洲一区二区精品久久av| a亚洲天堂av| 国产精品久久久久一区二区三区 | 欧美一区国产二区| 国产精品你懂的在线欣赏| 国产一区二区在线免费观看| 精品99999| 国产一区二区在线视频| 久久夜色精品国产噜噜av| 91麻豆精品国产91久久久久久久久 | 国产午夜精品一区二区三区四区| 精品亚洲国产成人av制服丝袜 | 欧美一区二区美女| 日韩av电影一区| 欧美一区二区三区日韩| 日韩不卡手机在线v区| 91麻豆精品国产无毒不卡在线观看| 亚瑟在线精品视频| 欧美精品在线视频| 日日夜夜免费精品| 欧美一级欧美三级| 韩国成人精品a∨在线观看| 久久五月婷婷丁香社区| 国产成人丝袜美腿| 国产亚洲欧美在线| 丁香六月综合激情| 亚洲色图.com| 在线观看亚洲a| 日韩高清在线观看| 精品久久人人做人人爰| 国产盗摄一区二区| 欧美高清在线精品一区| 91影视在线播放| 日韩精品一二区| 欧美精品一区二区三区久久久| 美女视频免费一区| 国产亚洲短视频| 91网址在线看| 日韩精品亚洲一区| 久久伊人蜜桃av一区二区| 成人免费福利片| 一区av在线播放| 日韩精品专区在线影院观看| 国产成人免费视频一区| 国产精品护士白丝一区av| 色婷婷综合久久久久中文| 色综合中文综合网| 91蜜桃视频在线| 水蜜桃久久夜色精品一区的特点| 欧美xxxx在线观看| 成人美女视频在线观看| 亚洲国产一二三| 欧美草草影院在线视频| av高清久久久| 肉色丝袜一区二区| 国产亚洲一区二区三区四区| av午夜一区麻豆| 亚洲va在线va天堂| 国产农村妇女毛片精品久久麻豆| 91美女在线看| 精品在线你懂的| 亚洲免费在线观看| 精品欧美乱码久久久久久1区2区| 成人av在线播放网址| 偷窥国产亚洲免费视频| 国产日韩影视精品| 777久久久精品| 99久久婷婷国产| 久久99精品久久久久婷婷| 亚洲精品中文在线| 久久久美女艺术照精彩视频福利播放| 91丨国产丨九色丨pron| 捆绑调教美女网站视频一区| 国产精品看片你懂得| 欧美一区二区黄| 色综合一区二区| 国产精品66部| 午夜天堂影视香蕉久久| 国产精品美女久久福利网站| 一本色道久久综合亚洲aⅴ蜜桃| 久久99精品久久久久久国产越南| 亚洲男人的天堂一区二区| 久久午夜羞羞影院免费观看| 欧美日韩www| av亚洲产国偷v产偷v自拍| 性做久久久久久| 国产精品久久久久久久久搜平片 | 宅男在线国产精品| 91蜜桃网址入口| 国产盗摄一区二区三区| 亚洲国产精品视频| 久久久精品日韩欧美| 制服.丝袜.亚洲.另类.中文 | 成人av在线播放网址| 午夜精品在线看| 国产精品久久久久国产精品日日| 欧美mv日韩mv国产| 欧美日韩www| 91国产精品成人| 大桥未久av一区二区三区中文| 亚洲图片一区二区| 亚洲欧洲日产国产综合网| 久久久久久夜精品精品免费| 欧美一级高清片在线观看| 欧美日韩一区二区不卡| 高清国产午夜精品久久久久久| 毛片av一区二区三区| 日韩制服丝袜先锋影音| 亚洲愉拍自拍另类高清精品| 国产精品成人一区二区三区夜夜夜 | 九九国产精品视频| 一区二区三区精品在线观看| 国产精品成人在线观看| 国产欧美视频在线观看| 精品国产免费人成电影在线观看四季| 欧美老人xxxx18| 欧美色偷偷大香| 51精品国自产在线| 日韩一级视频免费观看在线| 欧美一区二区三区免费观看视频| 欧美一区二区三区系列电影| 日韩三级视频在线观看| 久久综合色之久久综合| 2020国产精品自拍| 日本一区二区三区四区| 国产精品家庭影院| 亚洲黄色免费电影| 午夜av电影一区| 精品影视av免费| 高清成人在线观看| 91蜜桃婷婷狠狠久久综合9色| 在线免费观看日韩欧美| 欧美精品欧美精品系列| 欧美成人三级在线| 久久久久99精品一区| 国产精品灌醉下药二区| 伊人色综合久久天天人手人婷| 午夜精品久久久久| 久久se这里有精品| 成人av在线资源网| 欧美在线不卡视频| 欧美videofree性高清杂交| 久久精品人人做| 亚洲美腿欧美偷拍| 日韩av一区二区在线影视| 国产一区二区美女诱惑| 91欧美激情一区二区三区成人| 欧美午夜免费电影| 日韩美女一区二区三区| 国产精品免费网站在线观看| 伊人色综合久久天天| 久热成人在线视频| 99热精品国产| 4438成人网| 中文字幕巨乱亚洲| 五月天一区二区| 国产成人午夜99999| 欧美性xxxxx极品少妇| 欧美成人女星排行榜| 国产精品久久久久久久久久免费看| 亚洲国产视频一区二区| 欧美午夜精品久久久| 精品99999| 奇米888四色在线精品| 国内精品伊人久久久久av影院 | 日韩精品专区在线影院重磅| 国产精品系列在线| 亚洲国产成人av网| 国产高清一区日本| 色偷偷一区二区三区| 日韩视频一区在线观看| 国产精品免费免费| 日韩成人精品在线| 成人国产精品免费网站| 欧美老年两性高潮| 国产欧美日韩在线观看| 五月天中文字幕一区二区| 成人小视频免费在线观看| 51午夜精品国产| 综合电影一区二区三区| 久久99精品国产| 欧美撒尿777hd撒尿| 中文字幕二三区不卡|