精华内容
下载资源
问答
  • HDMI采集卡+Python+OpenCV实时显示画面前言一、C+OpenCV获取采集卡索引号二、Python+OpenCV使用步骤1.引入库2.实时读取画面三、C++OpenCV的配置1.采用VS2015+OpenCV3.4.11的配置2.安装OpenCV3.OpenCV环境变量的配置4...


    前言

    视频采集卡:用来截断并捕获并复制视频信号,直接采集硬件视频输出接口的信号,从硬件层面去获取视频信号,再把视频信号返回到系统内生成视频文件。
    我们把原本输出到显示器的信号从中间截断,在中间复制一份,其中的一份照常输出给原来的显示设备,另一份通过一些特殊的手段拷贝下来,然后把这个拷贝的视频信号,重新编码成视频,输出到用来采集数据的机器上,就可以做到在显示器正常工作的情况下,我们依旧可以录制或者实时采集视频信号推流。
    在使用USB视频采集卡将信号采集并传输到电脑上后,还需借助采集软件才可将信号储存下来。调用采集卡,选择好对应的视频和音频设备,存储分辨率、格式(MJPG)、码率等可以根据自己需求设置。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210604161009797.gif#pic_center)

    提示:以下是本篇文章正文内容,下面案例可供参考

    一、C+OpenCV获取采集卡索引号

    使用c++获取USB采集卡的索引号,(一般为1)。

    代码如下:

    #include <opencv2/imgcodecs.hpp>
    #include <opencv2/highgui.hpp>
    #include "windows.h"
    #include "dshow.h"
    #include <iostream>
    
    #pragma comment(lib, "strmiids.lib")
    #pragma comment(lib, "quartz.lib")
    
    using namespace cv;
    using namespace std;
    
    int listDevices(vector<string>& list) {
    	ICreateDevEnum *pDevEnum = NULL;
    	IEnumMoniker *pEnum = NULL;
    	int deviceCounter = 0;
    	CoInitialize(NULL);
    	HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL,
    		CLSCTX_INPROC_SERVER, IID_ICreateDevEnum,
    		reinterpret_cast<void**>(&pDevEnum));
    	if (SUCCEEDED(hr))
    	{
    		hr = pDevEnum->CreateClassEnumerator(
    			CLSID_VideoInputDeviceCategory,
    			&pEnum, 0);
    		if (hr == S_OK) {
    			printf("SETUP: Looking For Capture Devices\n");
    			IMoniker *pMoniker = NULL;
    			while (pEnum->Next(1, &pMoniker, NULL) == S_OK) {
    				IPropertyBag *pPropBag;
    				hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag,
    					(void**)(&pPropBag));
    				if (FAILED(hr)) {
    					pMoniker->Release();
    					continue;  // Skip this one, maybe the next one will work.
    				}
    				VARIANT varName;
    				VariantInit(&varName);
    				hr = pPropBag->Read(L"Description", &varName, 0);
    				if (FAILED(hr)) hr = pPropBag->Read(L"FriendlyName", &varName, 0);
    				if (SUCCEEDED(hr))
    				{
    					hr = pPropBag->Read(L"FriendlyName", &varName, 0);
    					int count = 0;
    					char tmp[255] = { 0 };
    					//int maxLen = sizeof(deviceNames[0]) / sizeof(deviceNames[0][0]) - 2;
    					while (varName.bstrVal[count] != 0x00 && count < 255)
    					{
    						tmp[count] = (char)varName.bstrVal[count];
    						count++;
    					}
    					list.push_back(tmp);
    				}
    				pPropBag->Release();
    				pPropBag = NULL;
    				pMoniker->Release();
    				pMoniker = NULL;
    				deviceCounter++;
    			}
    			pDevEnum->Release();
    			pDevEnum = NULL;
    			pEnum->Release();
    			pEnum = NULL;
    		}	
    	}
    	return deviceCounter;
    }
    
    int main()
    {
    	vector<string> list;
    	listDevices(list);
    	int capid0 = 0, capid1 = 0;
    	cout << "dev_size =      " << list.size() << endl;
    	for (int i = 0; i<list.size(); i++)
    	{
    		if (list[i] == "3D Camera")
    			capid1 = i;
    		if (list[i] == "USB2.0 HD UVC WebCam")
    			capid0 = i;
    		cout << "device lists:  " << list[i] << "     i =   " << i << endl;
    	}
    	getchar();
    	return 0;
    }
    

    运行代码,得到下图。在这里插入图片描述
    可见视频采集卡的索引号为1。
    注:opencv的环境不用说自己配置还有两个系统库,需要额外的添加 #pragma comment(lib, “strmiids.lib”) #pragma comment(lib, “quartz.lib”)

    参考: https://blog.csdn.net/Yancy_/article/details/107560034


    二、Python+OpenCV使用步骤

    1.引入库

    代码如下:

    #Python版本3.7.4
    import cv2   #版本为4.5.2
    import numpy as np
    

    2.实时读取画面

    代码如下:

    cap0 = cv2.VideoCapture(1+ cv2.CAP_DSHOW)  # 视频流
    #cap0.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))  #读取视频格式
    # 设置分辨率
    cap0.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)  
    cap0.set(cv2.CAP_PROP_FRAME_HEIGHT, 1024)
    while(cap0.isOpened()):
        ret,frame=cap0.read()
        if ret==True:
            cv2.imshow("frame", frame)
        pass
        if cv2.waitKey(1000)&0xFF==ord("q"):
            break
        pass
    pass
    cap0.release()
    cv2.destroyAllWindows()
    

    注意当cv2.VideoCapture(*)中取0时,调用的是本地的摄像头;取1时,调用外置的摄像头。USB采集卡实际上已经通过usb接口被识别为视频流设备,只不过需要设置分辨率来显示画面。


    三、C++OpenCV的配置

    1.采用VS2015+OpenCV3.4.11的配置

    1.采用VS2015+OpenCV3.4.11的配置
    分别可在VS官网和opencv官网下载两款软件,OpenCV版本如下。
    在这里插入图片描述

    2.安装OpenCV

    安装OpenCV,哪个盘均可,本人把他放到了E:\Program Files\opencv\opencv(本人安装时多放了一个文件夹,不要介意)文件夹下,如下图:
    在这里插入图片描述

    3.OpenCV环境变量的配置

    3 提取之后进行环境变量的配置,此电脑-属性-高级系统设置-环境变量-系统变量-path中添加E:\Program Files\opencv\opencv\build\x64\vc14及E:\Program Files\opencv\opencv\build\x64\vc14\bin.添加之后确定,退出。

    4.VC2015包含目录和库目录的配置

    对VC2015属性页,进行包含目录和库目录的配置。
    在这里插入图片描述

    在这里插入图片描述

    5.VC2015链接器-输入-附加依赖项的配置

    对链接器-输入-附加依赖项并进行配置

    在这里插入图片描述

    这样就可以使用“一”中的代码了。
    参考:https://blog.csdn.net/zhaojinzhi1992/article/details/108259296


    总结

    初次撰写,如有错误,尽请指正,不胜感谢。。。

    展开全文
  • QT+OpenCv 实时显示摄像头画面

    万次阅读 多人点赞 2018-08-16 16:20:20
    一般来说,用opencv调用摄像头是很方便的,但是当需要将画面显示在我们的GUI界面中则需要将格式转换下,话不多说直接贴代码。 以下为打开摄像头部分的代码,原理是利用QT中的QTimer,本次程序设定时间为每20ms结束...

    一般来说,用opencv调用摄像头是很方便的,但是当需要将画面显示在我们的GUI界面中则需要将格式转换下,话不多说直接贴代码。

    以下为打开摄像头部分的代码,原理是利用QT中的QTimer,本次程序设定时间为每20ms结束时启动该函数,需要在构造函数中将事件和定时器连接起来。

    QTimer timer = new QTimer;
    connect(timer, SIGNAL(timeout()), this, SLOT(opencam()));//时间到后启动opencam时间

     

    void QtGuiApplication7::opencam()
    {
    	//cap->open(0);
    	if (!cap->isOpened())
    	{
    		cap->open(0);
    	};
    		cap->read(frame);
    		//imshow("strat", immm);
    		cvtColor(frame, srcmat2, CV_BGR2RGB);
    		cvtColor(frame, gray, CV_BGR2GRAY);
    		//sobel 边缘检测
    		Sobel(gray, dst_x, gray.depth(), 1, 0);
    		Sobel(gray, dst_y, gray.depth(), 0, 1);
    		convertScaleAbs(dst_x, dst_x);
    		convertScaleAbs(dst_y, dst_y);
    		addWeighted(dst_x, 0.5, dst_y, 0.5, 0, dst);
    		//imshow("dst", dst);
    		//原始图像的显示
    		QImage img = QImage((const unsigned char*)srcmat2.data, // uchar* data
    			srcmat2.cols, srcmat2.rows, srcmat2.step, QImage::Format_RGB888);//格式转换
    		int a = ui.label->width();
    		int b = ui.label->height();
    		QImage ime = img.scaled(a, b);//自定义缩放
    		ui.label->setPixmap(QPixmap::fromImage(ime));
    		ui.label->show();
                //处理后图像的显示
    		QImage img_2 = QImage((const unsigned char*)dst.data, // uchar* data
    			dst.cols, dst.rows, dst.step, QImage::Format_Grayscale8);
    
    		int a2 = ui.label_2->width();
    		int b2 = ui.label_2->height();
    		QImage imgg = img_2.scaled(a2, b2);
    		ui.label_2->setPixmap(QPixmap::fromImage(imgg));
    		ui.label_2->show();
                    timer->start(20);//启动计时器
    };

    本次测试中加了个简单的sobel边缘提取的处理,以下为测试结果图。

     

    总结:Qt+OpenCV显示摄像头画面的核心还是在数据类型的转换和定时器的使用。

    展开全文
  • opencv 实时显示当前时间

    千次阅读 2014-08-14 15:29:51
    实时显示时间: CvFont font; CTime m_StartTime1 = CTime::GetCurrentTime(); CString filename = m_StartTime1.Format("%Y-%m-%d %H:%M:%S" ); wchar_t* wCharString = filename.GetBuffer(filename....
    CvFont font;  
    cvInitFont(&font,CV_FONT_HERSHEY_COMPLEX, 1, 1, 0, 2, CV_AA); 
    cvPutText(m_Frame, "HELLO!" , cvPoint(50, 50), &font, CV_RGB(255,255,255));
    
    //m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FRAME_WIDTH);
    
    不支持中文叠加。
    
    实时显示时间:
    	CvFont font;  
    	CTime m_StartTime1 = CTime::GetCurrentTime();
    	CString filename = m_StartTime1.Format("%Y-%m-%d %H:%M:%S" );
    			
    	wchar_t* wCharString = filename.GetBuffer(filename.GetLength()+1); 
    	size_t origsize = wcslen(wCharString) + 1; 
    	size_t convertedChars = 0; 
    	char *CharString; 
    	CharString=new char(origsize); 
    	wcstombs_s(&convertedChars, CharString, origsize, wCharString , _TRUNCATE); 
    
    	cvInitFont(&font,CV_FONT_HERSHEY_COMPLEX, 1, 1, 0, 2, CV_AA); 
    	cvPutText(m_Frame, CharString,cvPoint(50, 50), &font, CV_RGB(255,255,255));
    		

    展开全文
  •  做上位机的界面用的是Qt,里面也配置好了OpenCV,用起来很方便,现在要解决的是如何设计一个地图,并且每次实时显示当前的位置。因为没有可借鉴的资料,我就根据激光雷达那个数据界面的启发,想到办法,可能比较笨...

        有个类似于自动行驶小车的项目,使用摄像头检测贴在地上的地标,并在上位机实时显示当前小车所处的位置,上位机是Ubuntu系统。

        做上位机的界面用的是Qt,里面也配置好了OpenCV,用起来很方便,现在要解决的是如何设计一个地图,并且每次实时显示当前的位置。因为没有可借鉴的资料,我就根据激光雷达那个数据界面的启发,想到办法,可能比较笨,如果大家有更好的方法,请务必指教!我考虑的方法是先把地上的标志对应到地图上,对应成一个12*12的网格,然后用OpenCV生成这个空的网格地图,然后程序运行时加载这幅地图,地图长这个样:

                                                                             

        然后当小车在地上运行扫描到标志时,就可以得到当前所在的位置,然后在就在对应的交点上画一个红点,当进行到下一点时,用一个白点覆盖上一步的点,再画一个红点,也就是红点总是代表当前点,而用白点代表走过的点,程序的结果是这个样:

                                                                             

        附上很简单的打点部分的代码段:

    int xData=1000,yData=1000;                                //保证一开始的点在地图外边
    CvPoint pCirLast=cvPoint(xData,yData);
    cvCircle(mapImage,pCirLast,10,CV_RGB(255,255,255),-1);    //每次把上一步的点用白色标记
    yData=480-40*(((int)text[3]-48)+((int)text[2]-48)*10);    
    xData=(((int)text[4]-48)*10+((int)text[5]-48)+6)*40;      
    CvPoint pCirNew=cvPoint(xData,yData);           
    cvCircle(mapImage,pCirNew,10,CV_RGB(255,0,0),-1);         //把当前的点用红色标记
    mapQImage=Mat2QImage(mapImage);
    ui->showLocateLabel->clear();
    ui->showLocateLabel->setPixmap(QPixmap::fromImage(mapQImage));


    展开全文
  • Python+OpenCV实时图像处理

    万次阅读 多人点赞 2020-01-04 23:09:35
    初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试有一定帮助。
  • OpenCV-相机 如何使用 pyqt 显示来自网络摄像头的 OpenCV 实时视频流的示例。 在的慷慨帮助下
  • 利用opencv实现了摄像头的实时拍摄并显示
  • opencv 读取本地视频实时传输并在服务端实时显示 TCP协议
  • opencv中文显示

    热门讨论 2014-04-09 20:37:14
    可以在图片中用opencv显示中文字符,opencv自带的函数不能显示中文
  • 在vs2013上win32控制台运用opencv鼠标实时截取图像并显示坐标
  • 树莓派+opencv实时读取摄像头

    千次阅读 2021-01-27 21:26:49
    利用python的opencv模块读取摄像头来获取图像,同时调用datetime模块来读取实时的时间并显示在屏幕上 import cv2 import datetime #获取摄像头视频 cap = cv2.VideoCapture(0) # 获取视频宽度 frame_width = int...
  • OPENCV图像显示

    2013-05-09 09:08:06
    基于OPENCV的图像显示技术,将相机图像显示在VC界面上,方便大家对图像的处理
  • FFmpeg转OpenCV Mat显示

    千次阅读 2018-03-19 14:33:53
    FFmpeg一般采用SDL进行显示,如果不追求复杂的界面、交互和多线程功能,当然也可以使用OpenCV的imshow()方法进行显示了,而且实现起来比SDL更简单。方法也很简单,只需要把视频帧的BGR格式的数据(如果是RGB格式,...
  • 这是Python调用OpenCV打开电脑摄像头进行实时显示源码。 演示python如何调用OpenCV,完成摄像头调用与显示。 给接下来使用opencv进行图像处理打好基础。
  • 单文档调用opencv打开摄像头(自带,外接都可以),实时显示,附带图像处理,视频对比显示实时保存图像。
  • 资源下载地址:https://download.csdn.net/download/qianlixiaomage/10402073
  • 对海康威视相机进行二次开发,拼接多个相机模块,形成全景图像。该代码块在时vs2012+opencv2.4.13+HIKSDK完成的
  • OpenCV 3D显示Viz模块

    千次阅读 2018-10-30 11:36:10
    目录1. OpenCV Viz 模块是什么2. 如何编译3. 如何使用4. Result5....1. OpenCV Viz 模块是什么 ...它是依赖于VTK(Visualization Toolkit) 进行显示的。 2. 如何编译 官方发布的Opencv 安装包中并没有编译...
  • Qt OpenCV 图像显示转换

    千次阅读 2016-07-13 17:30:55
    Qt OpenCV 显示
  • Qt+OpenCV 摄像头显示图像

    热门讨论 2011-04-15 09:57:24
    Qt+OpenCV 摄像头显示图像 Qt OpenCV 摄像头
  • opencv四】利用opencv读取显示视频

    千次阅读 2018-12-21 21:08:57
    opencv中读取显示视频的头文件是highgui.hpp。视频图像处理头文件imgproc.hpp。 整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径。 #include &quot;opencv2/highgui/...
  • opencv全屏显示

    千次阅读 2016-03-22 21:15:17
    opencv可以设置全屏显示图片,具体代码如下,环境:win10 32bit, opencv249 cv::Mat img = cv::imread("d:/0.jpg"); if (img.empty()) { printf("img load error \n"); system("pause"); exit(-1); } ...
  • OpenCV显示摄像头图像

    千次阅读 2015-10-18 21:00:37
    OpenCV显示摄像头图像 我们使用Opencv的函数来读取显示摄像头的图像,首先要声明图像指针,读取图像,创建窗口,然后显示每一帧的图像。 使用的函数1.cvCreateCameraCapture 函数作用:初始化从摄像头中获取视频...
  • MFC中用opencv图像显示

    2017-12-26 10:25:16
    求在MFC多文档中用opencv显示图像的代码,不能用图像控件做,要显示在窗口口中,点击菜单中“File”->“open”之后可以打开任意格式的图片
  • OpenCV显示中文字符

    千次阅读 2019-06-10 16:13:14
    OpenCV默认是不支持显示中文字符的,于是网上有人自己写了一个类实现,只需要下载到自己的代码文件中,添加头文件就可以通过调用函数来显示中文了。 下载链接 csdn下载:...
  • MFC OpenCV 显示图像,VS2013 写的,比较新,添加CvvImage类来显示程序,我用的是VS2013 + OPENCV2.4.9 , 只要版本不太老,估计都可以的。
  • 基于openCV实现,picture control控件动态显示图片,并由picture control控件存储当前图片。
  • 跟着网上的教程用树莓派装了opencv 然后也运行了一些简单的图像处理 识别分割啥的但是感觉效果都好差。。本科生想出去参加竞赛来着。做机器人 拿树莓派做上位机再加上 跑opencv+cnn等等。。。 会不会arm根本忙不过来...
  • opencv+udp+c++的摄像头实时传输显示源码,里面包括client server两个c++源代码。用的时候需要导入opencv库和附加依赖项WS2_32.lib。在开发板也测试过。只需在开发板上移植opencv的动态链接库(该库我已经上传)和...
  • opencv调取摄像头并实时显示

    千次阅读 2018-09-05 15:43:25
    # -*- coding: utf-8 -*- """ Created on Mon May 7 14:59:54 2018 @author: PC """ import cv2 import time import numpy as np cam = cv2.VideoCapture(0) ...cam.set(4,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,463
精华内容 35,385
关键字:

opencv实时显示