diegobill 0 Denunciar post Postado Março 13, 2009 Estou tentando fazer um programa que exibe em um picturebox os frames capturados por uma webcam, essa biblioteca SAASCapturaNS é que tem as funções de captura, mas o problema do programa está no uso da System::Windows::Forms::Timer, pq ja consigo capturar uma única imagem, mas quando tento capturar uma sequencia usando o timer não dá certo. CÓDIGO: #pragma once namespace webcam { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace SAASCapturaNS; /// <summary> /// Summary for Form1 /// /// WARNING: If you change the name of this class, you will need to change the /// 'Resource File Name' property for the managed resource compiler tool /// associated with all .resx files this class depends on. Otherwise, /// the designers will not be able to interact properly with localized /// resources associated with this form. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { SAASCapturaNS::SAASCaptura^ video; public: Form1(void) { InitializeComponent(); // //TODO: Add the constructor code here // } protected: /// <summary> /// Clean up any resources being used. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::PictureBox^ pictureBox1; protected: private: System::Windows::Forms::Button^ button1; private: System::Windows::Forms::Button^ button2; private: System::Windows::Forms::Button^ button3; private: System::Windows::Forms::Timer^ timer1; private: System::ComponentModel::IContainer^ components; private: /// <summary> /// Required designer variable. /// </summary> #pragma region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> void InitializeComponent(void) { this->components = (gcnew System::ComponentModel::Container()); this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox()); this->button1 = (gcnew System::Windows::Forms::Button()); this->button2 = (gcnew System::Windows::Forms::Button()); this->button3 = (gcnew System::Windows::Forms::Button()); this->timer1 = (gcnew System::Windows::Forms::Timer(this->components)); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->BeginInit(); this->SuspendLayout(); // // pictureBox1 // this->pictureBox1->Location = System::Drawing::Point(12, 12); this->pictureBox1->Name = L"pictureBox1"; this->pictureBox1->Size = System::Drawing::Size(758, 450); this->pictureBox1->TabIndex = 0; this->pictureBox1->TabStop = false; this->pictureBox1->Click += gcnew System::EventHandler(this, &Form1::pictureBox1_Click); // // button1 // this->button1->Location = System::Drawing::Point(12, 468); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(75, 23); this->button1->TabIndex = 1; this->button1->Text = L"Iniciar"; this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); // // button2 // this->button2->Location = System::Drawing::Point(93, 468); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(75, 23); this->button2->TabIndex = 2; this->button2->Text = L"Parar"; this->button2->UseVisualStyleBackColor = true; this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click); // // button3 // this->button3->Location = System::Drawing::Point(174, 468); this->button3->Name = L"button3"; this->button3->Size = System::Drawing::Size(75, 23); this->button3->TabIndex = 3; this->button3->Text = L"button3"; this->button3->UseVisualStyleBackColor = true; this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click); // // timer1 // this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick); // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(782, 503); this->Controls->Add(this->button3); this->Controls->Add(this->button2); this->Controls->Add(this->button1); this->Controls->Add(this->pictureBox1); this->Name = L"Form1"; this->Text = L"Webcam"; this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load); (cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->EndInit(); this->ResumeLayout(false); } #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { } private: System::Void pictureBox1_Click(System::Object^ sender, System::EventArgs^ e) { } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //if (video == nullptr) SAASCapturaNS::SAASCaptura^ video = (gcnew SAASCapturaNS::SAASCaptura()); button2->Enabled = true; button1->Enabled = false; video->Inicializar_Webcam(); pictureBox1->Image = video->GetFrame(); this->timer1->Enabled = true; this->timer1->Interval = 33; this->timer1->Start(); } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { button2->Enabled = false; button1->Enabled = true; video->Finalizar(); pictureBox1->Image = nullptr; this->timer1->Stop(); } private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { } private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { System::Drawing::Bitmap^ frame = video->GetFrame(); pictureBox1->Image=frame; } }; } Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Março 13, 2009 Nunca usei o visual c++, mas, está ocorrendo algum erro ou simplesmente não está apresentando a imagem a cada X segundos? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Março 13, 2009 Movido Plataforma .NET » Windows Applications http://forum.imasters.com.br/public/style_emoticons/default/seta.gif C/C++ Acho que em C/C++ terá mais chance de ser respondido. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
diegobill 0 Denunciar post Postado Março 16, 2009 Existe esse sub-forum Plataforma .NET » Windows Applications seta.gif C/C++ ?!!? eu nao achei ..... mas consegui resolver o problema era : Onde tinha : private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //if (video == nullptr) SAASCapturaNS::SAASCaptura^ video = (gcnew SAASCapturaNS::SAASCaptura()); button2->Enabled = true; button1->Enabled = false; Era pra ser : private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { //if (video == nullptr) video = (gcnew SAASCapturaNS::SAASCaptura()); button2->Enabled = true; button1->Enabled = false; Compartilhar este post Link para o post Compartilhar em outros sites