【发布时间】:2021-08-17 21:05:54
【问题描述】:
在这个程序中,我想用一个线程捕获我的网络摄像头的帧,然后将这些帧发送到另一个名为 MainThread 的帧,并在图片框中显示网络摄像头
所以我想将捕获的帧 (_frame1) 从 capture_frame_1_Thread 传递到 MainThread。 有什么想法吗?
这里是代码
VideoCapture cap1(0);
Mat _frame1;
void capture_frame_1() {
for (;;) {
cap1 >> _frame1;
if (waitKey(1) == 27) {
break;
}
}
}
void invoke_capture_frame_1() {
Invoke(gcnew System::Action(this, &MyForm::capture_frame_1));
}
void start_picture_Boxes() {
for (;;) {
mat2picture bimapconvert;
this->pictureBox1->Image = bimapconvert.Mat2Bimap(_frame1);
pictureBox1->Refresh();
if (waitKey(1) == 27) {
break;
}
}
}
void picture_Boxes() {
Invoke(gcnew System::Action(this, &MyForm::start_picture_Boxes));
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
ThreadStart^ ThreadMethod1 = gcnew ThreadStart(this, &MyForm::invoke_capture_frame_1);
Thread^ capture_frame_1_Thread = gcnew Thread(ThreadMethod1);
ThreadStart^ ThreadMethod3 = gcnew ThreadStart(this, &MyForm::picture_Boxes);
Thread^ MainThread = gcnew Thread(ThreadMethod3);
capture_frame_1_Thread->Start();
MainThread->Start();
}
};
}
【问题讨论】:
标签: c++ multithreading winforms