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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? grabber.c

?? 以feith智能嵌入式相機為終端的linux-windows系統(tǒng)間通信
?? 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品在线观看| 日韩精品亚洲一区| 国产精品水嫩水嫩| 国产精品久久久久婷婷| 国产精品国产三级国产a| ●精品国产综合乱码久久久久| 国产精品视频免费| 综合电影一区二区三区 | 日韩免费高清av| 日韩免费性生活视频播放| 精品国精品国产尤物美女| 日韩精品中午字幕| 欧美精品一区二区三区高清aⅴ | 久久你懂得1024| 久久伊99综合婷婷久久伊| 国产亚洲污的网站| 亚洲欧美怡红院| 亚洲午夜免费福利视频| 美腿丝袜在线亚洲一区| 国产精品一区二区果冻传媒| 成人黄页毛片网站| 在线观看欧美日本| 91精品国产全国免费观看| 欧美va亚洲va| 国产精品第四页| 午夜精品久久久久久久| 精品一区二区日韩| 成人app在线| 欧美日韩一级片在线观看| 欧美大尺度电影在线| 亚洲国产高清aⅴ视频| 一区二区三区在线免费观看| 天堂资源在线中文精品| 久久精品国产亚洲5555| 成人av在线网| 欧美精品久久一区二区三区| 亚洲精品在线网站| 中文字幕中文在线不卡住| 性感美女极品91精品| 精品夜夜嗨av一区二区三区| av动漫一区二区| 欧美一区二区三区爱爱| 久久精品一区二区三区不卡 | 成人手机在线视频| 91国偷自产一区二区三区观看| 欧美日韩国产精选| 国产拍欧美日韩视频二区| 亚洲女爱视频在线| 日本欧美在线观看| 99久久综合国产精品| 日韩视频一区二区| 亚洲免费在线视频一区 二区| 青青草原综合久久大伊人精品优势 | 亚洲欧美自拍偷拍色图| 日本成人在线看| 91精品91久久久中77777| 精品久久人人做人人爰| 亚洲一区二区三区自拍| 成人午夜av电影| 日韩欧美高清dvd碟片| 亚洲与欧洲av电影| 国产成人精品亚洲午夜麻豆| 在线观看91av| 亚洲精品第一国产综合野| 国产宾馆实践打屁股91| 4hu四虎永久在线影院成人| 中文字幕日韩av资源站| 精品在线一区二区三区| 欧美日精品一区视频| 国产精品久久久久久亚洲毛片| 日本成人超碰在线观看| 在线精品视频一区二区三四| 国产精品免费视频一区| 韩国毛片一区二区三区| 欧美精品在欧美一区二区少妇| 国产欧美日韩中文久久| 黑人巨大精品欧美一区| 9191久久久久久久久久久| 亚洲精品中文字幕乱码三区 | 国产日韩精品视频一区| 日本亚洲天堂网| 欧美日韩高清在线| 亚洲图片一区二区| 91麻豆视频网站| 亚洲欧美怡红院| 丁香婷婷深情五月亚洲| 国产亚洲精品久| 国产一区二区伦理| 久久色.com| 国产尤物一区二区| 精品国产凹凸成av人导航| 久久av资源站| 欧美成人三级在线| 麻豆国产欧美一区二区三区| 91精品国产福利| 日韩av一区二区在线影视| 欧美日韩成人综合天天影院 | 91日韩一区二区三区| 亚洲天堂成人在线观看| 91在线视频播放| 亚洲视频一二三区| 色综合天天综合网国产成人综合天 | 国产一区二区三区在线看麻豆| 日韩欧美一级特黄在线播放| 奇米777欧美一区二区| 欧美精品欧美精品系列| 日本亚洲欧美天堂免费| 精品久久久久久久久久久久包黑料 | 亚洲美腿欧美偷拍| 在线观看免费成人| 午夜在线成人av| 91精品国产综合久久精品麻豆| 男人的j进女人的j一区| 日韩欧美国产小视频| 国产一区亚洲一区| 中文av一区特黄| 一本久久a久久精品亚洲| 依依成人精品视频| 欧美日韩黄色一区二区| 免费成人在线播放| 久久综合九色欧美综合狠狠| 国产成人午夜高潮毛片| 国产精品国产三级国产普通话三级| 99精品欧美一区二区三区小说| 亚洲综合一区二区| 欧美久久久一区| 久久不见久久见中文字幕免费| 欧美激情一区二区三区四区 | 久久久美女艺术照精彩视频福利播放| 韩国av一区二区三区四区| 国产精品美女www爽爽爽| 在线观看亚洲专区| 日韩成人精品在线观看| 精品成a人在线观看| 粉嫩av亚洲一区二区图片| 亚洲精品久久久久久国产精华液| 91超碰这里只有精品国产| 国产一区二区三区在线观看免费| 国产精品欧美久久久久无广告| 欧美自拍偷拍午夜视频| 久久成人免费电影| 亚洲视频电影在线| 日韩午夜电影在线观看| 成人精品免费视频| 亚洲国产欧美在线| 久久精品视频免费| 欧美日韩国产高清一区二区三区| 激情另类小说区图片区视频区| 亚洲天堂a在线| 日韩欧美国产一区在线观看| 99精品偷自拍| 久久电影网电视剧免费观看| 亚洲男人的天堂一区二区| 精品国产麻豆免费人成网站| 91亚洲国产成人精品一区二区三 | 日韩高清不卡在线| 中文字幕不卡在线观看| 在线播放亚洲一区| 成人av一区二区三区| 青青草国产精品亚洲专区无| 亚洲欧洲色图综合| 欧美电影免费观看高清完整版在线 | 狠狠色丁香婷综合久久| 夜夜揉揉日日人人青青一国产精品| 精品91自产拍在线观看一区| 在线看日韩精品电影| 成人免费看片app下载| 青青草伊人久久| 亚洲一区在线观看网站| 欧美激情综合在线| 欧美一级免费观看| 91福利在线导航| 国产高清在线精品| 老司机精品视频线观看86 | 一本久久a久久精品亚洲| 国产一区二区0| 免费不卡在线观看| 亚洲午夜久久久久久久久电影院| 国产精品久久久一本精品 | 中文字幕免费在线观看视频一区| 在线不卡一区二区| 欧美手机在线视频| 一本一道综合狠狠老| 成人免费观看男女羞羞视频| 国产毛片精品视频| 青娱乐精品视频在线| 午夜在线成人av| 亚洲二区在线观看| 亚洲人午夜精品天堂一二香蕉| 国产精品私房写真福利视频| 欧美xxxx在线观看| 日韩三级电影网址| 欧美乱妇一区二区三区不卡视频| 在线观看日韩高清av| 91无套直看片红桃| caoporn国产一区二区| 成人综合婷婷国产精品久久免费| 精品一区二区在线播放| 免费观看久久久4p| 久久精品二区亚洲w码|