blackbird (25.01.2013 08:27, просмотров: 237) ответил 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ом можно прочитать но не изображение. Что делать то ? мне бы до точек добраться картинки и задача почти решена будет ..
Чтобы мне этот вопрос сказать у нас здесь будет особенно я имею ввиду так !