C++ 将opencv waitkey()与C++;
我试图用计时器显示网络摄像头提要,但它无法平滑渲染。代码如下:C++ 将opencv waitkey()与C++;,c++,opencv,C++,Opencv,我试图用计时器显示网络摄像头提要,但它无法平滑渲染。代码如下: int timer = 10; VideoCapture cap(0); Mat img; while (true) { cap.read(img); if (timer == 0) { cout << "TIME'S UP !!!" << endl; }
int timer = 10;
VideoCapture cap(0);
Mat img;
while (true) {
cap.read(img);
if (timer == 0) {
cout << "TIME'S UP !!!" << endl;
}
else if (timer <= 20) {
imshow("Image", img);
waitKey(1);
}
system("cls");
cout << timer-- << " seconds left" << endl;
Sleep(1000);
}
}
int定时器=10;
视频捕获上限(0);
Mat-img;
while(true){
第二章(img);
如果(计时器==0){
cout您可能想使用,继续调用cv::imshow()
+cv::waitKey
10秒并结束循环
#include <chrono>
#include <iostream>
#include <opencv2/opencv.hpp>
namespace ch = std::chrono;
using namespace std::literals;
int main()
{
cv::VideoCapture cap(0);
cv::Mat img;
auto t0 = ch::system_clock::now();
for (decltype(t0)::duration elapsed; elapsed < 10s; elapsed = ch::system_clock::now() - t0)
{
if (cap >> img) {
imshow("Image", img);
}
waitKey(1);
}
std::cout << "TIME'S UP !!!" << std::endl;
}
#包括
#包括
#包括
名称空间ch=std::chrono;
使用名称空间std::literals;
int main()
{
cv::视频捕获上限(0);
cv::Mat img;
自动t0=ch::系统时钟::现在();
对于(decltype(t0)::经过的持续时间;经过的时间<10s;经过的时间=ch::system_clock::now()-t0)
{
如果(cap>>img){
imshow(“图像”,img);
}
等待键(1);
}
std::所以我可以保留Sleep()
或者删除它吗?不,你不需要它。但是如果你需要,试着使用std::this_thread::Sleep_for(1s)
。for(decltype(t0)::持续时间过去了;过去了<25s;过去了=系统时钟::now()-t0){while(true){cap.read(img);if(timer)你为什么保留while(true)
?或者旧的timer
变量?或者sleep call?你不需要这些。只需要编译/运行我给你的代码;如果它不起作用,请告诉我们原因。如果它起作用,请根据你的需要调整它。