精华内容
下载资源
问答
  • Python+OpenCV实时图像处理

    万次阅读 多人点赞 2020-01-04 23:09:35
    初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试有一定帮助。

    目录

    1、导入库文件

    2、设计GUI

    3、调用摄像头

    4、实时图像处理

    4.1、阈值二值化

    4.2、边缘检测

    4.3、轮廓检测

    4.4、高斯滤波

    4.5、色彩转换

    4.6、调节对比度

    5、退出系统


    初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试有一定帮助。

    1、导入库文件

    这里主要使用PySimpleGUI、cv2和numpy库文件,PySimpleGUI库文件实现GUI可视化,cv2库文件是Python的OpenCV接口文件,numpy库文件实现数值的转换和运算,均可通过pip导入。

    import PySimpleGUI as sg  #pip install pysimplegui
    import cv2  #pip install opencv-python
    import numpy as np #pip install numpy

    2、设计GUI

    基于PySimpleGUI库文件实现GUI设计,本项目界面设计较为简单,设计800X400尺寸大小的框图,浅绿色背景,主要由摄像头界面区域和控制按钮区域两部分组成。效果如下所示:

    GUI代码如下所示:

        #背景色
        sg.theme('LightGreen')
    
        #定义窗口布局
        layout = [
          [sg.Image(filename='', key='image')],
          [sg.Radio('None', 'Radio', True, size=(10, 1))],
          [sg.Radio('threshold', 'Radio', size=(10, 1), key='thresh'),
           sg.Slider((0, 255), 128, 1, orientation='h', size=(40, 15), key='thresh_slider')],
          [sg.Radio('canny', 'Radio', size=(10, 1), key='canny'),
           sg.Slider((0, 255), 128, 1, orientation='h', size=(20, 15), key='canny_slider_a'),
           sg.Slider((0, 255), 128, 1, orientation='h', size=(20, 15), key='canny_slider_b')],
          [sg.Radio('contour', 'Radio', size=(10, 1), key='contour'),
           sg.Slider((0, 255), 128, 1, orientation='h', size=(20, 15), key='contour_slider'),
           sg.Slider((0, 255), 80, 1, orientation='h', size=(20, 15), key='base_slider')],
          [sg.Radio('blur', 'Radio', size=(10, 1), key='blur'),
           sg.Slider((1, 11), 1, 1, orientation='h', size=(40, 15), key='blur_slider')],
          [sg.Radio('hue', 'Radio', size=(10, 1), key='hue'),
           sg.Slider((0, 225), 0, 1, orientation='h', size=(40, 15), key='hue_slider')],
          [sg.Radio('enhance', 'Radio', size=(10, 1), key='enhance'),
           sg.Slider((1, 255), 128, 1, orientation='h', size=(40, 15), key='enhance_slider')],
          [sg.Button('Exit', size=(10, 1))]
        ]
    
        #窗口设计
        window = sg.Window('OpenCV实时图像处理',
                   layout,
                   location=(800, 400),
                   finalize=True)

    3、调用摄像头

    打开电脑内置摄像头,将数据显示在GUI界面上,效果如下所示:

    代码如下所示:

        #打开内置摄像头
        cap = cv2.VideoCapture(0)
        while True:
            event, values = window.read(timeout=0, timeout_key='timeout')
    
            #实时读取图像
            ret, frame = cap.read()
    
            #GUI实时更新
            imgbytes = cv2.imencode('.png', frame)[1].tobytes()
            window['image'].update(data=imgbytes)
    
        window.close()

    4、实时图像处理

    4.1、阈值二值化

    进行阈值二值化操作,大于阈值values['thresh_slider']的,使用255表示,小于阈值values['thresh_slider']的,使用0表示,效果如下所示:

     代码如下所示:

    if values['thresh']:
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)[:, :, 0]
        frame = cv2.threshold(frame, values['thresh_slider'], 255, cv2.THRESH_BINARY)[1]

    4.2、边缘检测

    进行边缘检测,values['canny_slider_a']表示最小阈值,values['canny_slider_b']表示最大阈值,效果如下所示:

    代码如下所示:

    if values['canny']:
        frame = cv2.Canny(frame, values['canny_slider_a'], values['canny_slider_b'])

    4.3、轮廓检测

    轮廓检测是形状分析和物体检测和识别的有用工具,连接所有连续点(沿着边界)的曲线,具有相同的颜色或强度,效果如下所示:

     代码如下所示:

    if values['contour']:
        hue = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
        hue = cv2.GaussianBlur(hue, (21, 21), 1)
        hue = cv2.inRange(hue, np.array([values['contour_slider'], values['base_slider'], 40]),
                          np.array([values['contour_slider'] + 30, 255, 220]))
        cnts= cv2.findContours(hue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
        cv2.drawContours(frame, cnts, -1, (0, 0, 255), 2)
    

    4.4、高斯滤波

    进行高斯滤波,(21, 21)表示高斯矩阵的长与宽都是21,标准差取values['blur_slider'],效果如下所示:

     代码如下所示:

    if values['blur']:
        frame = cv2.GaussianBlur(frame, (21, 21), values['blur_slider'])
    

    4.5、色彩转换

    色彩空间的转化,HSV转换为BGR,效果如下所示:

     代码如下所示:

    if values['hue']:
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
        frame[:, :, 0] += int(values['hue_slider'])
        frame = cv2.cvtColor(frame, cv2.COLOR_HSV2BGR)

    4.6、调节对比度

    增强对比度,使图像中的细节看起来更加清晰,效果如下所示:

      代码如下所示:

    if values['enhance']:
        enh_val = values['enhance_slider'] / 40
        clahe = cv2.createCLAHE(clipLimit=enh_val, tileGridSize=(8, 8))
        lab = cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)
        lab[:, :, 0] = clahe.apply(lab[:, :, 0])
        frame = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)
    

    5、退出系统

    直接break即可跳出循环。

    if event == 'Exit' or event is None:
        break

    拓展学习:基于Python的人工智能美颜系统 

    请关注公众号,回复关键字:OpenCV实时图像处理,获取项目资源。

    展开全文
  • 实时

    万次阅读 2019-07-21 12:19:01
    实时存在不可的事情

    实时存在不可的事情

    展开全文
  • OpenCV+海康威视摄像头的实时读取

    万次阅读 多人点赞 2015-12-18 11:12:09
    OpenCV+海康威视摄像头的实时读取环境 硬件: PC:i7-4970 16GB内存 摄像头型号:DS-2CD3310D-I(2.8mm) 软件: windows-x64、vs2012、opencv2.4.8、hkvision5114-x64版本库 配置 保证使用SADP工具可以识别摄像头...

    #OpenCV+海康威视摄像头的实时读取

    本文由 @lonelyrains出品,转载请注明出处。
    文章链接: http://blog.csdn.net/lonelyrains/article/details/50350052

    之前没想过会有这么多朋友遇到问题,所以建了 qq群1:536898072 qq群2:1071276535,专门供大家以后一起交流讨论图像和机器学习的工程实践问题。

    vx: blade170103

    ##环境

    ##配置

    • 保证使用SADP工具可以识别摄像头,然后配置IP与电脑在同一个网段。
      这里写图片描述
    • 再保证可以从浏览器中访问。账号密码默认的一般是admin、a123456789(老版本的摄像头密码是12345)。
      这里写图片描述
      登录成功后可能要求下载WebComponent控件,下载好了安装便是。如果仍然出现如下画面:
      这里写图片描述
      则换一种浏览器试。一般是默认浏览器没问题的。
      这里写图片描述
    • 配置使用sdk中自带的ClientDemo.exe工具可以访问
      这里写图片描述
      这里写图片描述
    • 配置sdk开发环境
      – opencv的配置
      这里不展开讲opencv的配置,仅说明需要配置opencv环境变量、设置好对应的vs开发环境的属性配置
      这里写图片描述
      这里写图片描述
      这里写图片描述
      – 海康威视sdk属性配置
      因为是64位环境,为了增强属性配置的内聚性,单独添加新项目属性表,设置海康威视sdk的属性
      这里写图片描述
      这里写图片描述
      这里写图片描述
      这里写图片描述
      依赖库写全,为:
      HCNetSDK.lib;PlayCtrl.lib;ws2_32.lib;winmm.lib;GdiPlus.lib;IPHlpApi.Lib;%(AdditionalDependencies)

    ##代码及说明

    #include <opencv\cv.h>
    #include <opencv\highgui.h>
    
    #include <iostream>
    
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <windows.h>
    #include <HCNetSDK.h>
    /*#include "PlayM4.h"*/
    #include <plaympeg4.h>
    #include <opencv2\opencv.hpp>
    #include <time.h>
    
    #include "global.h"
    #include "readCamera.h"
    
    #define USECOLOR 1
    
    using namespace cv;
    using namespace std;
    
    //--------------------------------------------
    int iPicNum=0;//Set channel NO.
    LONG nPort=-1;
    HWND hWnd=NULL;
    
    
    void yv12toYUV(char *outYuv, char *inYv12, int width, int height,int widthStep)
    {
    	int col,row;
    	unsigned int Y,U,V;
    	int tmp;
    	int idx;
    
    	//printf("widthStep=%d.\n",widthStep);
    
    	for (row=0; row<height; row++)
    	{
    		idx=row * widthStep;
    		int rowptr=row*width;
    
    		for (col=0; col<width; col++)
    		{
    			//int colhalf=col>>1;
    			tmp = (row/2)*(width/2)+(col/2);
    			//         if((row==1)&&( col>=1400 &&col<=1600))
    			//         { 
    			//          printf("col=%d,row=%d,width=%d,tmp=%d.\n",col,row,width,tmp);
    			//          printf("row*width+col=%d,width*height+width*height/4+tmp=%d,width*height+tmp=%d.\n",row*width+col,width*height+width*height/4+tmp,width*height+tmp);
    			//         } 
    			Y=(unsigned int) inYv12[row*width+col];
    			U=(unsigned int) inYv12[width*height+width*height/4+tmp];
    			V=(unsigned int) inYv12[width*height+tmp];
    			//         if ((col==200))
    			//         { 
    			//         printf("col=%d,row=%d,width=%d,tmp=%d.\n",col,row,width,tmp);
    			//         printf("width*height+width*height/4+tmp=%d.\n",width*height+width*height/4+tmp);
    			//         return ;
    			//         }
    			if((idx+col*3+2)> (1200 * widthStep))
    			{
    				//printf("row * widthStep=%d,idx+col*3+2=%d.\n",1200 * widthStep,idx+col*3+2);
    			} 
    			outYuv[idx+col*3]   = Y;
    			outYuv[idx+col*3+1] = U;
    			outYuv[idx+col*3+2] = V;
    		}
    	}
    	//printf("col=%d,row=%d.\n",col,row);
    }
    
    
    
    //解码回调 视频为YUV数据(YV12),音频为PCM数据
    void CALLBACK DecCBFun(long nPort,char * pBuf,long nSize,FRAME_INFO * pFrameInfo, long nReserved1,long nReserved2)
    {
    	long lFrameType = pFrameInfo->nType;	
    
    	if(lFrameType ==T_YV12)
    	{
    #if USECOLOR
    		//int start = clock();
    		static IplImage* pImgYCrCb = cvCreateImage(cvSize(pFrameInfo->nWidth,pFrameInfo->nHeight), 8, 3);//得到图像的Y分量  
    		yv12toYUV(pImgYCrCb->imageData, pBuf, pFrameInfo->nWidth,pFrameInfo->nHeight,pImgYCrCb->widthStep);//得到全部RGB图像
    		static IplImage* pImg = cvCreateImage(cvSize(pFrameInfo->nWidth,pFrameInfo->nHeight), 8, 3);  
    		cvCvtColor(pImgYCrCb,pImg,CV_YCrCb2RGB);  
    		//int end = clock();
    #else
    		static IplImage* pImg = cvCreateImage(cvSize(pFrameInfo->nWidth,pFrameInfo->nHeight), 8, 1);  
    		memcpy(pImg->imageData,pBuf,pFrameInfo->nWidth*pFrameInfo->nHeight); 
    #endif
    		//printf("%d\n",end-start);
    
    		Mat frametemp(pImg),frame;
    
    		//frametemp.copyTo(frame);
    // 		cvShowImage("IPCamera",pImg);
    // 		cvWaitKey(1);
    		EnterCriticalSection(&g_cs_frameList);
    		g_frameList.push_back(frametemp);
    		LeaveCriticalSection(&g_cs_frameList);
    
    #if USECOLOR
    // 		cvReleaseImage(&pImgYCrCb);
    // 		cvReleaseImage(&pImg);
    #else
    		/*cvReleaseImage(&pImg);*/
    #endif
    		//此时是YV12格式的视频数据,保存在pBuf中,可以fwrite(pBuf,nSize,1,Videofile);
    		//fwrite(pBuf,nSize,1,fp);
    	}
    	/***************
    	else if (lFrameType ==T_AUDIO16)
    	{
    	//此时是音频数据,数据保存在pBuf中,可以fwrite(pBuf,nSize,1,Audiofile);
    
    	}
    	else
    	{
    
    	}
    	*******************/
    
    }
    
    
    ///实时流回调
    void CALLBACK fRealDataCallBack(LONG lRealHandle,DWORD dwDataType,BYTE *pBuffer,DWORD dwBufSize,void *pUser)
    {
    	DWORD dRet;
    	switch (dwDataType)
    	{
    	case NET_DVR_SYSHEAD:    //系统头
    		if (!PlayM4_GetPort(&nPort)) //获取播放库未使用的通道号
    		{
    			break;
    		}
    		if(dwBufSize > 0)
    		{
    			if (!PlayM4_OpenStream(nPort,pBuffer,dwBufSize,1024*1024))
    			{
    				dRet=PlayM4_GetLastError(nPort);
    				break;
    			}
    			//设置解码回调函数 只解码不显示
    			if (!PlayM4_SetDecCallBack(nPort,DecCBFun))
    			{
    				dRet=PlayM4_GetLastError(nPort);
    				break;
    			}
    
    			//设置解码回调函数 解码且显示
    			//if (!PlayM4_SetDecCallBackEx(nPort,DecCBFun,NULL,NULL))
    			//{
    			//	dRet=PlayM4_GetLastError(nPort);
    			//	break;
    			//}
    
    			//打开视频解码
    			if (!PlayM4_Play(nPort,hWnd))
    			{
    				dRet=PlayM4_GetLastError(nPort);
    				break;
    			}
    
    			//打开音频解码, 需要码流是复合流
    // 			if (!PlayM4_PlaySound(nPort))
    // 			{
    // 				dRet=PlayM4_GetLastError(nPort);
    // 				break;
    // 			}		
    		}
    		break;
    
    	case NET_DVR_STREAMDATA:   //码流数据
    		if (dwBufSize > 0 && nPort != -1)
    		{
    			BOOL inData=PlayM4_InputData(nPort,pBuffer,dwBufSize);
    			while (!inData)
    			{
    				Sleep(10);
    				inData=PlayM4_InputData(nPort,pBuffer,dwBufSize);
    				OutputDebugString(L"PlayM4_InputData failed \n");	
    			}
    		}
    		break;	
    	}		
    }
    
    void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
    {
    	char tempbuf[256] = {0};
    	switch(dwType) 
    	{
    	case EXCEPTION_RECONNECT:    //预览时重连
    		printf("----------reconnect--------%d\n", time(NULL));
    		break;
    	default:
    		break;
    	}
    }
    
    unsigned readCamera(void *param)
    {
    	//---------------------------------------
    	// 初始化
    	NET_DVR_Init();
    	//设置连接时间与重连时间
    	NET_DVR_SetConnectTime(2000, 1);
    	NET_DVR_SetReconnect(10000, true);
    
    	//---------------------------------------
    	// 获取控制台窗口句柄
    	//HMODULE hKernel32 = GetModuleHandle((LPCWSTR)"kernel32");
    	//GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");
    
    	//---------------------------------------
    	// 注册设备
    	LONG lUserID;
    	NET_DVR_DEVICEINFO_V30 struDeviceInfo;
    	lUserID = NET_DVR_Login_V30("192.168.2.64", 8000, "admin", "a123456789", &struDeviceInfo);
    	if (lUserID < 0)
    	{
    		printf("Login error, %d\n", NET_DVR_GetLastError());
    		NET_DVR_Cleanup();
    		return -1;
    	}
    
    	//---------------------------------------
    	//设置异常消息回调函数
    	NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);
    
    
    	//cvNamedWindow("IPCamera");
    	//---------------------------------------
    	//启动预览并设置回调数据流 
    	NET_DVR_CLIENTINFO ClientInfo;
    	ClientInfo.lChannel = 1;        //Channel number 设备通道号
    	ClientInfo.hPlayWnd = NULL;     //窗口为空,设备SDK不解码只取流
    	ClientInfo.lLinkMode = 0;       //Main Stream
    	ClientInfo.sMultiCastIP = NULL;
    
    	LONG lRealPlayHandle;
    	lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID,&ClientInfo,fRealDataCallBack,NULL,TRUE);
    	if (lRealPlayHandle<0)
    	{
    		printf("NET_DVR_RealPlay_V30 failed! Error number: %d\n",NET_DVR_GetLastError());
    		return 0;
    	}
    
    	//cvWaitKey(0);
    	Sleep(-1);
    
    	//fclose(fp);
    	//---------------------------------------
    	//关闭预览
    	if(!NET_DVR_StopRealPlay(lRealPlayHandle))
    	{
    		printf("NET_DVR_StopRealPlay error! Error number: %d\n",NET_DVR_GetLastError());
    		return 0;
    	}
    	//注销用户
    	NET_DVR_Logout(lUserID);
    	NET_DVR_Cleanup();
    
    	return 0;
    }
    

    其中最终得到的帧保存在g_frameList.push_back(frametemp);中。前后设置了对应的锁,用来对该帧序列的读写进行保护。这一部分内容是要自己完成的。即定义变量:

    CRITICAL_SECTION g_cs_frameList;
    std::list<Mat> g_frameList;

    主函数中的调用代码,先建立线程,调用上述读摄像头的函数的回调,并把读到的帧序列保存在g_frameList中,然后再读取该序列,保存到Mat里即可:

    int main()
    {	
    	HANDLE hThread;
    	unsigned threadID;
    	Mat frame1;
    
     	InitializeCriticalSection(&g_cs_frameList);
     	hThread = (HANDLE)_beginthreadex( NULL, 0, &readCamera, NULL, 0, &threadID );
     	...
    	EnterCriticalSection(&g_cs_frameList);
    	if(g_frameList.size())
    	{
    		list<Mat>::iterator it;
    		it = g_frameList.end();
    		it--;
    		Mat dbgframe = (*(it));
    		//imshow("frame from camera",dbgframe);
    		//dbgframe.copyTo(frame1);
    		//dbgframe.release();
            (*g_frameList.begin()).copyTo(frame[i]);
    		frame1 = dbgframe;
    		g_frameList.pop_front();
    	}
    	g_frameList.clear(); // 丢掉旧的帧
    	LeaveCriticalSection(&g_cs_frameList);
    	...
    
    	return 0;
    }
    
    展开全文
  • VSCode设置网页代码实时预览

    万次阅读 多人点赞 2018-10-14 21:39:32
    目录 一、设置描述 二、操作步骤 一、设置描述 1.VSCode作为一款很不错的开发软件,相比DW更小巧,用来...其实我们可以在VSCode中配置一个网页服务器,修改完代码之后只需要保存代码浏览器就可以实时预览 二、...

    目录

    一、设置描述

    二、操作步骤


    一、设置描述

        1.VSCode作为一款很不错的开发软件,相比DW更小巧,用来测试前端特别不错,那么我们平时开发网页发现只有写完代码,然后保存,接下来到浏览器中刷新查看效果,然后不停重复,我们发现很多时间就这样浪费到了这三个步骤上。

        2.其实我们可以在VSCode中配置一个网页服务器,修改完代码之后只需要保存代码浏览器就可以实时预览

    二、操作步骤

        1.打开VScode,点击坐标工具栏的最后一个进入插件安装

        2.如果没有显示左边的工具栏,也可以在View中找到Extensions进入插件安装

        3.在搜索框中输入Live Server,在搜索结果中找到如下,选择安装

        4.安装完成需要重启软件插件才能生效

        5.重启过之后,新建一个工作区(也可以直接拖一个文件夹到vscode中),在这里创建一个HTML文件做测试,注意单独新建一个HTML文件拖动到IDE中是使用不了Live Server的,需要把这个HTML文件放到创建的工作区(文件夹)中,新建完成后我们可以在状态栏上看到一个Go Live,单击会自动打开浏览器并显示

       提示:如果之前也有HTML项目,直接把项目根文件夹拖动到VScode中就会自动添加到工作区

        6.如果没有状态栏上,也可以在文件上单击右键,选择Open With Live Server这一项

        7.接下来修改代码我们只需要ctrl+S保存修改后的代码,浏览器自动刷新,动图显示

       8.遇到问题解决不了别忘了留言~~

    展开全文
  • C#使用chart绘制实时折线图,波形图

    万次阅读 多人点赞 2018-08-24 16:12:32
    采用VS自带的Chart图表控件,制作实时动态显示的折线图,和波形图 涉及知识点: Chart 控件,功能强大,可以绘制柱状图,折线图,波形图,饼状图,大大简化了对图的开发与定制。 Chart控件的相关概念: ChartArea...
  • 实时数据仓库(实时数仓)建设

    万次阅读 多人点赞 2020-07-22 17:55:20
    从智能商业的角度来讲,数据的结果代表了用户的反馈,获取结果的及时性就显得尤为重要,快速的获取数据反馈能够帮助公司更快的做出决策,更好的进行产品迭代,实时数仓在这一过程中起到了不可替代的作用。...
  • 功能说明 自己定义基金名称,定义基金金额,运行一次即可...todo:更好的ui 实时刷新,自动获取你们整吧,懒得整 爬百度,因为我网络被限制没办法访问东方,只能爬百度,别逼逼不接受键盘,效果如图 源码地址: ...
  • MATLAB实时脚本或实时函数

    千次阅读 2020-06-27 16:35:25
    1、什么是MATLAB实时脚本或者实时函数? 2、MATLAB实时脚本作用 直观浏览和分析问题 共享富文本格式的可执行记叙脚本 创建交互式教学课件 3、与纯代码脚本和函数的差异 4、要求及不支持的功能 5、实时脚本的...
  • 实时存储引擎和实时计算引擎

    千次阅读 热门讨论 2020-10-20 00:06:16
    实时存储引擎和实时计算引擎 一 实时存储引擎 Kafka SSD 缓存架构解决延迟消费污染缓存空间问题 二 实时计算引擎 Flink 简介和系统架构 相当于mapreduce/spark + 实时计算 在实时处理框架中,不会持久化,而是写入...
  • 本帖总结了ubuntu下常用的网络查看/...nethogs可以查看实时进程网络占用。 安装: sudo apt install nethogs 查看网络状态: nethogs eth0 即 nethogs + 网卡名称,双击table会出现备选网卡名称 Detail:https:
  • 主要介绍了新型冠状病毒 2019-nCoV实时数据提取方法及实时播报实现方案。
  • 实时

    千次阅读 2019-10-01 04:57:21
    记得最初接触PROFINET技术,无论是网络上的基本介绍,还是相关的论文,与客户讨论工业以太网技术,实时性都是大家关注的重点内容,每次讨论必提及“实时性”的概念和参数等等。所以讲清楚实时性是一件很应景的事情,...
  • 什么是实时性,什么是硬实时?什么是软实时? 所谓时效性是指同一件事物在不同的时间具有很大的性质上的差异,我们管这个差异性叫时效性。时效性影响着决策的生效时间,时效性决定了决策在特定时间内是否有效。在...
  • 使用海康威视设备在Web端显示实时视频

    万次阅读 热门讨论 2018-12-03 21:19:27
    目前做的项目,需要Web端显示实时视频数据。本次项目使用的是海康威视的摄像头进行实时监控。 硬件:萤石的摄像头(海康威视旗下的),海康威视的硬盘录像机。 软件:vlc 2.2.6版本。 Web端和移动端接入萤石云平台...
  • 使用H5Stream开发实时监控系统

    万次阅读 热门讨论 2018-07-19 11:28:58
    这些天在尝试使用RTSP协议(Real Time Streaming Protocol,实时流传输协议)来完成实时传输和显示摄像头画面的功能,毕竟海康威视的web控件对高版本Chrome不予支持,如果使用这一套技术的话,后续的系统就难以优化...
  • 接上篇文章第4章的4.3.3:电商推荐系统(上):推荐系统架构、数据模型...第5章 实时推荐服务建设 5.1 实时推荐服务 5.2 实时推荐模型和代码框架 5.2.1 实时推荐模型算法设计 5.2.2 实时推荐模块框架 5.3 实时...
  • 实时系统和非实时系统的区别

    万次阅读 2018-08-27 16:51:58
    嵌入式操作系统分为实时系统和非实时系统两类,常见的实时系统有:ThreadX、FreeRTOS、ucOS;常见的非实时系统有:windows、linux、Android。两类操作系统的主要区别在于任务调度处理方式不同,具体说明如下。 非...
  • MATLAB摄像头实时图像处理

    万次阅读 多人点赞 2019-05-03 20:02:20
    之前由于双目测距的工作,用MATLAB获取摄像头数据并实时处理。现将一些基本操作分享给大家。欢迎交流
  • 想通过usb音频采集卡连接树莓派后实时采集音频,并通过音频流的方式将采集到的音频实时传输到另外一台电脑。 什么是树莓派? 树莓派是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个...
  • 实时操作系统与分时操作系统的区别

    万次阅读 多人点赞 2018-10-11 20:42:28
    1. 什么是实时操作系统? 实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务...
  • 实时数仓

    千次阅读 2019-04-30 21:15:49
    从智能商业的角度来讲,数据的结果代表了用户的反馈,获取结果的及时性就显得尤为重要,快速的获取数据反馈能够帮助公司更快的做出决策,更好的进行产品迭代,实时数仓在这一过程中起到了不可替代的作用。...
  • 实时接口

    千次阅读 2019-02-01 16:24:46
    因最近在开发webservice接口,所以结合公司发的文档,以及自己网上查的资料整理了一份实时接口介绍,并结合网上的开发教程,自己写了简单的socket和webService的项目,其他的实时接口只做了简单了解。项目已导出上传...
  • Flink1.8实时数仓项目实战

    千人学习 2019-08-26 18:10:00
    《Flink1.8实时数仓项目实战》课程主要基于Flink**稳定版本进行讲解,课程包含Flink DataSet、容错、Connector、Flink SQL以及实时数仓项目。希望通过本课程的学习,大家能快速掌握Flink 批处理和Flink SQL,并通过...
  • 对软实时和硬实时的理解

    千次阅读 2018-01-03 16:56:30
    1.软实时是利用操作系统的实时性,这时候要实现好的实时性需要使用实时性操作系统,硬实时是独立的实时系统,不依赖操作系统。 Example: TwinCAT属于硬实时,因为windows是非实时的 。 倍福的R3IO是软实时,...
  • 实时操作系统和非实时操作系统

    千次阅读 2019-04-07 20:12:20
    1.实时操作系统 实时操作系统,当外界事件和数据产生时,系统能以足够快的速度予以处理,其处理结果能在规定的时间内控制生产结果或对系统做出响应,并控制所有实时任务协调一致运行的操作系统。一般分为硬实时和软...
  • 微博实时话题和搜索微博实时抓取

    千次阅读 2018-11-30 08:57:39
    #两部分需求,一是搜索词实时微博情况,二是相关话题实时的微博情况(通过移动端获取api接口分析得到) 1.相关话题实时的微博情况 规律:要先找到话题list然后再跳转到各话题的实时微博去遍历 (注意的是话题list...
  • 在web页面实时播放监控视频

    万次阅读 2019-07-14 10:18:48
    因为项目需求,需要在web页面播放实时监控视频,而且是同时播放多个视频,还支持切换页面播放。监控是大华和海康 厂家的,并没有做流服务器,还是rtsp的流媒体格式,所以不能用H5的video来播放。 方案一 后端把...
  • Web实时推送Demo by SignalR

    千次下载 热门讨论 2013-12-18 09:59:49
    因近期发现很多关于 Web实时推送的问题贴,所以写了一个简单的 基于 SignalR 的Web实时推送 Demo.
  • 新型冠状病毒实时动态

    万次阅读 2020-01-23 18:31:38
    实时动态
  • 基于Socket的Android手机视频实时传输所有源程序

    千次下载 热门讨论 2013-01-08 15:07:06
    基于Socket的Android手机视频实时传输所有源程序,包括Android客户端和PC端。同时包含说明文档。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 327,427
精华内容 130,970
关键字:

实时