永发信息网

求一个多线程的例程C++(API),摄像头捕捉,双目测距的,想改成多线程的,不用每次数据处理完才能捕捉图像

答案:4  悬赏:20  手机版
解决时间 2021-03-31 23:16
求一个多线程的例程C++(API),摄像头捕捉,双目测距的,想改成多线程的,不用每次数据处理完才能捕捉图像
最佳答案
没法给你把这个做出来,除非你想out source给我,但要计算相应的工作时间付费的。现在只能给你一些建议:

首先,你要有一个概念,多线程只是在有CPU空闲的程序中实现多个线程并行,从而使程序显得更”流畅“。多线程并不会让你的CPU运算能力得到提高。

你的程序,或许可以用双线程:
一个线程捕捉图像,一个线程处理数据。但要记住两点:
1,两个线程间要加缓存
2,当缓存已经满了的时候,捕捉线程应该要等处理数据的线程处理完缓存才继续捕捉。
因此,并不能保证你用了双线程就会更加流畅,要你的的电脑运算能力。和捕捉图像的数据大小。
全部回答
#include
typedef HANDLE HSEMAPHORE;
#define P(hHandle) ::WaitForSingleObject(hHandle, INFINITE)
#define V(hHandle) ::ReleaseSemaphore(hHandle, 1, NULL)
#define Semaphore(lInitial, lMaximum) ::CreateSemaphore(NULL, lInitial, lMaximum, NULL)
#define Thread(lpProc, lpParam) ::CreateThread(NULL, 0, lpProc, (LPVOID)lpParam, 0, NULL)
#define Wait(nCount, lpHandles) ::WaitForMultipleObjects(nCount, lpHandles, TRUE, INFINITE)
HSEMAPHORE n = Semaphore(0, 1);
HSEMAPHORE s = Semaphore(1, 1);
HSEMAPHORE e = Semaphore(100, 100);
UINT count = 0;
void Produce()
void Consume()
DWORD WINAPI Producer(LPVOID lpParameter)
{
while (true)
{
Produce();
P(e);
P(s);
count++;
printf("Producer: %d\n", count);
V(s);
V(n);
}
return 0;
}
DWORD WINAPI Consumer(LPVOID lpParameter)
{
while (true)
{
P(n);
P(s);
count--;
printf("Consumer: %d\n", count);
V(s);
V(e);
Consume();
}
return 0;
}
int main()
{
HANDLE hThreads[2];
hThreads[0] = Thread(Producer, (LPVOID)NULL);
hThreads[1] = Thread(Consumer, (LPVOID)NULL);
Wait(2, hThreads);
return 0;
}
#include
typedef HANDLE HSEMAPHORE;
#define P(hHandle) ::WaitForSingleObject(hHandle, INFINITE)
#define V(hHandle) ::ReleaseSemaphore(hHandle, 1, NULL)
#define Semaphore(lInitial, lMaximum) ::CreateSemaphore(NULL, lInitial, lMaximum, NULL)
#define Thread(lpProc, lpParam) ::CreateThread(NULL, 0, lpProc, (LPVOID)lpParam, 0, NULL)
#define Wait(nCount, lpHandles) ::WaitForMultipleObjects(nCount, lpHandles, TRUE, INFINITE)
HSEMAPHORE n = Semaphore(0, 1);
HSEMAPHORE s = Semaphore(1, 1);
HSEMAPHORE e = Semaphore(100, 100);
UINT count = 0;
void Produce()
void Consume()
DWORD WINAPI Producer(LPVOID lpParameter)
{
while (true)
{
Produce();
P(e);
P(s);
count++;
printf("Producer: %d\n", count);
V(s);
V(n);
}
return 0;
}
DWORD WINAPI Consumer(LPVOID lpParameter)
{
while (true)
{
P(n);
P(s);
count--;
printf("Consumer: %d\n", count);
V(s);
V(e);
Consume();
}
return 0;
}
int main()
{
HANDLE hThreads[2];
hThreads[0] = Thread(Producer, (LPVOID)NULL);
hThreads[1] = Thread(Consumer, (LPVOID)NULL);
Wait(2, hThreads);
return 0;
}
另外,团IDC网上有许多产品团购,便宜有口碑
如果你机器是多核的,建议你试一下opencv+openmp
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
商店老板用820元进了20双同款运动鞋。要想这
电镀如何去油?
一个圆柱与圆锥的底面积相等,则这个圆柱与圆
渴望电视剧里刘大妈是谁演的
一个光猫想连两个无线路由器,要保证两个无线
怎么证明这个是偶函数
NBA德隆跟艾佛森做队友?
一碗襄阳牛肉面的热量
为什么说犹太人非法占领巴勒斯坦人的土
歌词中有 于是我唱了一首悲伤的歌 大概是快要
女生适合做什么工作除销售以外。
古代名人诚信的故事
质量手册是发放到部门负责人的还是算发放给部
南通红客电脑怎么样?听说服务态度和技术都不
CS1.5纯透视的 那种带个框就好 要无毒的 简单
推荐资讯
Win7 32怎么让系统还原?
我们公司电路板想要找一款比较好的焊锡来加工
对邮政服务工作的认识有哪些?
为什么属猪男和属虎女很佩却离婚了
求rwby第四季百度云,MP4的,谢谢
戏言中文谐音歌词是谐音歌词
拳霸2 结局问题
为什么,攒机在显卡上,大多数人都选择n卡的
发汗则动经,身为振振摇。的理解?
金华市磐安县佐村镇谷岙村溪北几号,,,有这
请问有人在美利网上买过东西吗?他们服务怎么
口袋妖怪蓝冰道谷市剧情过不了,到了道谷市一
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?