ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
383173 Топик полностью
blackbird (25.01.2013 08:27, просмотров: 203) ответил blackbird на то что из архива попробовал правда пришлось проект создавать и функции убирать на которые билдер матреился а это еще нет - а кстати куда DLL класть чтоб он его подхватил ?
в общем не получилось таки ничего из того исходника - ошибку дает . А вот этот переправленный исходник из архивного проекта изображение выдал с камеры на ура //--------------------------------------------------------------------------- #include <vcl.h> #include <vfw.h> #include <stdlib.h> #include <stdio.h> #include <io.h> #include <vector.h> //#include <math.h> #pragma hdrstop #include "shapka.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #define HUE_UNDEFINED -1 TForm1 *Form1; //--------------------------------------------------------------------------- HWND hvideo; unsigned char image [640 * 480 * 3]; unsigned SizeArea = 0; float Hseek = 30, Sseek = 0.26, Vseek = 170; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if (!hvideo) hvideo = capCreateCaptureWindow("VIDEO",WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, 10,10,650,490,Form1->Handle,501); if (!capDriverConnect(hvideo,0)) { ShowMessage("ConnectError"); return; } CAPDRIVERCAPS capinfo; capDriverGetCaps(hvideo,sizeof(CAPDRIVERCAPS),&capinfo); CAPTUREPARMS capparam; capCaptureGetSetup(hvideo,sizeof(CAPTUREPARMS),&capparam); BITMAPINFO info; int t = capGetVideoFormatSize(hvideo); capGetVideoFormat(hvideo,&info,t); info.bmiHeader.biWidth = 640; info.bmiHeader.biHeight = 480; info.bmiHeader.biBitCount = 24; info.bmiHeader.biSizeImage = 640 * 480 * 3; info.bmiHeader.biPlanes = 1; info.bmiColors[0].rgbBlue = 0; info.bmiColors[0].rgbGreen = 0; info.bmiColors[0].rgbRed = 0; info.bmiColors[0].rgbReserved = 0; capSetVideoFormat(hvideo,&info,40); t = capGetVideoFormat(hvideo,&info,40); capPreviewRate(hvideo,66); capPreview(hvideo,true); } //--------------------------------------------------------------------------- TColor getpixel (int x, int y) { return RGB(image [((479 - y) * 640 + x) * 3 + 2], image [((479 - y) * 640 + x) * 3 + 1], image [((479 - y) * 640 + x) * 3 + 0]); } //--------------------------------------------------------------------------- void putpixel (int x, int y, TColor c) { if (x < 0) x = 0; if (x > 639) x = 639; if (y < 0) y = 0; if (y > 479) y = 479; image [((479 - y) * 640 + x) * 3 + 2] = c & 0xFF; image [((479 - y) * 640 + x) * 3 + 1] = (c >> 8) & 0xFF; image [((479 - y) * 640 + x) * 3 + 0] = (c >> 16) & 0xFF; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { int i,j; i=(getpixel(300,200))&0x00ffff; Label1->Caption = "Число" +FloatToStrF(i,ffGeneral,7,2)+" Нумеров"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { Form1->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { int i,j; for(i=0;i<639;i++) { for(j=0;j<479;j++) { putpixel (i,j,clRed); }; }; } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { TColor c; FILE *f; int X = 0, Y = 0, N = 0; unsigned char R, G, B; float H, S, V; float Harea, Sarea, Varea; unsigned char header [54]; TMemoryStream *MS; /* capFileSaveDIB(hvideo, "capture_l.bmp"); // capGrabFrame(hvideo); f = fopen("capture_l.bmp", "rb"); fread(&header,1,54,f); fread(&image,1,640 * 480 * 3,f); fclose(f); */ MS = new TMemoryStream(); MS->Write(header,54); MS->Write(image,640 * 480 * 3); MS->Seek(0,SEEK_SET); //Image->Picture->Bitmap->LoadFromStream(MS); MS->Free(); } //--------------------------------------------------------------------------- Но проблема что ни getpixel ни putpixel не работают - то бишь putpixel куда то пишет что getpixelом можно прочитать но не изображение. Что делать то ? мне бы до точек добраться картинки и задача почти решена будет ..
Чтобы мне этот вопрос сказать у нас здесь будет особенно я имею ввиду так !