欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux編程_網(wǎng)頁(yè)視頻監(jiān)控項(xiàng)目

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:45 ? 次閱讀

【摘要】 介紹Linux下HTTP服務(wù)器搭建,完成網(wǎng)頁(yè)圖片顯示,網(wǎng)頁(yè)視頻顯示。

任務(wù)1: 網(wǎng)頁(yè)視頻監(jiān)控項(xiàng)目

目的: 使用瀏覽器訪(fǎng)問(wèn)開(kāi)發(fā)板的USB攝像頭圖像數(shù)據(jù),實(shí)時(shí)刷新到達(dá)視頻的效果。

1.?HTTP協(xié)議: 如何傳輸數(shù)據(jù),讓瀏覽器顯示?

2.?線(xiàn)程的并發(fā)執(zhí)行: 多個(gè)瀏覽器同時(shí)訪(fǎng)問(wèn)攝像頭數(shù)據(jù)。

3.?USB攝像頭編程: 如果獲取攝像頭的數(shù)據(jù)。

1.1 如何顯示一張靜態(tài)的圖片

HTTP協(xié)議: 文本協(xié)議-----報(bào)文: 字符串。

HTTP服務(wù)器基本的交互的步驟:

1.?先創(chuàng)建HTTP服務(wù)器

2.?使用瀏覽器(HTTP客戶(hù)端)訪(fǎng)問(wèn)HTTP服務(wù)器:

(1)?第一次請(qǐng)求的路徑是: / :表示詢(xún)問(wèn): 你需要我做什么?

(2)?HTTP服務(wù)器收到請(qǐng)求之后,先向HTTP客戶(hù)端發(fā)送應(yīng)答報(bào)文。

再發(fā)送需要瀏覽器處理的數(shù)據(jù): 數(shù)據(jù)類(lèi)型、數(shù)據(jù)長(zhǎng)度。 :表示分配給瀏覽器需要做的任務(wù)

如果需要瀏覽器顯示一張圖片,瀏覽器在收到任務(wù)之后,會(huì)解析任務(wù),再次向服務(wù)器發(fā)送請(qǐng)求:

請(qǐng)求圖片(圖片的資源路徑):

HTTP服務(wù)器收到請(qǐng)求之后,先向HTTP客戶(hù)端發(fā)送應(yīng)答報(bào)文。

再發(fā)送需要瀏覽器處理的數(shù)據(jù): 數(shù)據(jù)類(lèi)型、數(shù)據(jù)長(zhǎng)度。

1.2 采集攝像頭數(shù)據(jù)、顯示動(dòng)態(tài)圖片

1. 采集攝像頭數(shù)據(jù): 開(kāi)一個(gè)新的線(xiàn)程

2. 需要將攝像頭的數(shù)據(jù)編碼為JPG格式—jpglib只能將RGB數(shù)據(jù)壓縮成JPG格式保存到文件。

需要使用改進(jìn)的算法,將JPG圖像壓縮存放到內(nèi)存里。

3.?需要考慮資源共享: 線(xiàn)程互斥鎖+條件變量

(1)?線(xiàn)程1: 負(fù)責(zé)采集攝像頭的數(shù)據(jù),并進(jìn)行編碼壓縮jpg圖像

(2)?線(xiàn)程2(主線(xiàn)程): 負(fù)責(zé)等待HTTP客戶(hù)端連接(瀏覽器),處理與瀏覽器之間的交互過(guò)程。

pYYBAGMlO2GAdjHYAADUqpM_-IU324.png

??云服務(wù)器: 本身就是一個(gè)虛擬電腦

1.?登錄: 使用ssh遠(yuǎn)程登錄。

2.?買(mǎi)云服務(wù)器: 送一個(gè)公網(wǎng)IP地址。

3.?也可以購(gòu)買(mǎi)一個(gè)域名。www.1234.com

今天的代碼基礎(chǔ)之上實(shí)現(xiàn):

跨網(wǎng)段網(wǎng)頁(yè)視頻監(jiān)控。

poYBAGMlO2GABXVEAADqi_-m3-g598.pngpoYBAGMlO2KAd5ufAAGLE_1ScZA202.png

int on = 1;

if(setsockopt(http_server_fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)

{

printf("setsockopt(SO_REUSEADDR) 設(shè)置錯(cuò)誤!\n");

exit(-1);

}

//這樣可以保證: 端口關(guān)閉之后,立即可以再次使用

1.3 解決TCP服務(wù)器退出時(shí),產(chǎn)生退出信號(hào)終止進(jìn)程

signal.h中的宏定義SIG_DFL及SIG_IGN

SIG_DFL,SIG_IGN 分別表示無(wú)返回值的函數(shù)指針,指針值分別是0和1,

這兩個(gè)指針值邏輯上講是實(shí)際程序中不可能出現(xiàn)的函數(shù)地址值。

SIG_DFL:默認(rèn)信號(hào)處理程序

SIG_IGN:忽略信號(hào)的處理程序

/*

往一個(gè)已經(jīng)接收到FIN的套接中寫(xiě)是允許的,接收到的FIN僅僅代表對(duì)方不再發(fā)送數(shù)據(jù)。

并不能代表我不能發(fā)送數(shù)據(jù)給對(duì)方。

往一個(gè)FIN結(jié)束的進(jìn)程中寫(xiě)(write),對(duì)方會(huì)發(fā)送一個(gè)RST字段過(guò)來(lái),TCP重置。

如果再調(diào)用write就會(huì)產(chǎn)生SIGPIPE信號(hào)

*/

signal(SIGPIPE,SIG_IGN);

1.4 HTTP服務(wù)器搭建_顯示一靜態(tài)JPG圖片

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include  
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define HTTP_SERVER_PORT 1237  /*HTTP服務(wù)器端口號(hào)*/
int http_server_fd; /*HTTP服務(wù)器套接字*/
/*
函數(shù)功能: 處理退出的信號(hào)
*/
void exit_sighandler(int sig)
{
	/*關(guān)閉服務(wù)器套接字*/
	close(http_server_fd);
	sleep(2);
	
	//退出進(jìn)程
	exit(1);
}

/*
函數(shù)功能: 向HTTP客戶(hù)端發(fā)送文件數(shù)據(jù)
*/
void HTTPClient_SendFileData(int client_fd,char *type,char *file)
{
	int file_fd;
	int read_len;
	struct stat file_buf;
	unsigned char buffer[1024];
	file_fd=open(file,O_RDONLY);
	if(file_fd<0)
	{
		printf("%s文件打開(kāi)失敗!\n",file);
		return;
	}
	
	/*1. 獲取文件的狀態(tài)信息*/
	stat(file,&file_buf);
	//printf("%d\n",file_buf.st_size);
	
	/*2. 構(gòu)造報(bào)文頭*/
	sprintf(buffer,"HTTP/1.1 200 OK\r\n" \
				   "Content-type:%s\r\n" \
				   "Content-Length:%d\r\n" 
				   "Server: wbyq\r\n" \
				   "\r\n",type,file_buf.st_size);
	
	read_len=strlen(buffer);
	
	/*2. 發(fā)送數(shù)據(jù)*/
	do
	{
		if(write(client_fd,buffer,read_len)<=0)break;
	}while((read_len=read(file_fd,buffer,sizeof(buffer)))>0);
}

/*
函數(shù)功能: 處理HTTP客戶(hù)端的線(xiàn)程
*/
void *pthread_Handler_HTTP_Client(void *dev)
{
	int Clientfd;
	unsigned char buffer[1024];
	unsigned char *p=buffer;
	struct pollfd fds;
	int poll_state; /*poll函數(shù)的狀態(tài)值*/
	int recv_len;   /*接收的數(shù)據(jù)長(zhǎng)度*/
	if(dev==NULL)
	{
		pthread_exit(NULL); /*終止線(xiàn)程*/
	}
	Clientfd=*(int*)dev; /*保存客戶(hù)端套接字描述符*/
	free(dev); /*釋放空間*/
	
	/*1. 接收客戶(hù)端的請(qǐng)求報(bào)文*/
	fds.fd=Clientfd;
	fds.events=POLLIN;
	while(1)
	{
		/*等待數(shù)據(jù)*/
		poll_state=poll(&fds,1,100);
		if(poll_state<=0)break; /*數(shù)據(jù)接收完畢就退出*/
		recv_len=read(Clientfd,p,1024);
		p+=recv_len;
		if(p-buffer>1024)break;
	}
	
	//printf("buffer=%s\n",buffer);
	
	/*1. 判斷請(qǐng)求的路徑*/
	if(strstr(buffer,"GET / HTTP/1.1"))
	{
		HTTPClient_SendFileData(Clientfd,"text/html","index.html");
	}
	else if(strstr(buffer,"GET /image.jpg HTTP/1.1"))
	{
		HTTPClient_SendFileData(Clientfd,"image/jpeg","123.jpg");
	}
	else if(strstr(buffer,"GET /favicon.ico HTTP/1.1"))
	{
		HTTPClient_SendFileData(Clientfd,"image/x-icon","123.ico");
	}
	
	close(Clientfd);
}
/*
HTTP服務(wù)器創(chuàng)建:
1. 創(chuàng)建socket套接字
2. 綁定端口號(hào): 服務(wù)器創(chuàng)建
3. 設(shè)置監(jiān)聽(tīng)端口的數(shù)量: 服務(wù)器最大等待連接的客戶(hù)端總數(shù)量
4. 等待客戶(hù)端連接
*/
int main(int argc,char **argv)
{
	/*1. 綁定將要捕獲的信號(hào)*/
	signal(SIGINT,exit_sighandler);
	signal(SIGSEGV,exit_sighandler);
	
	/*2. 創(chuàng)建套接字*/
	http_server_fd=socket(AF_INET,SOCK_STREAM,0);
	if(http_server_fd<0)
	{
		printf("HTTP服務(wù)器:創(chuàng)建套接字創(chuàng)建失敗!\n");
		return -1;
	}
	
	/*3. 綁定端口號(hào)*/
	struct sockaddr_in server_addr;
	memset(&server_addr,0,sizeof(struct sockaddr_in));
	server_addr.sin_family=AF_INET; //IPV4
	server_addr.sin_port=htons(HTTP_SERVER_PORT); //需要填大端格式的端口號(hào)數(shù)據(jù)
	server_addr.sin_addr.s_addr=0;//inet_addr("192.168.18.3");
	/*0=inet_addr("0.0.0.0") ---表示本地所有IP地址*/
	if(bind(http_server_fd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr_in))!=0)
	{
		printf("HTTP服務(wù)器:綁定端口號(hào)失敗!\n");
		return -2;
	}
	
	/*4. 設(shè)置監(jiān)聽(tīng)客戶(hù)端連接的數(shù)量*/
	listen(http_server_fd,50);
	
	/*5. 等待客戶(hù)端連接:阻塞*/
	struct sockaddr_in client_addr;
	int addrlen=sizeof(struct sockaddr_in);
	pthread_t thread_id; /*線(xiàn)程的ID*/
	int *client_fd=NULL; /*保存客戶(hù)端的套接字描述符*/
	while(1)
	{
		client_fd=(int*)malloc(sizeof(int));
		if(client_fd==NULL)
		{
			printf("存放客戶(hù)端的套接字描述符,空間申請(qǐng)失敗!\n");
			break;
		}
		*client_fd=accept(http_server_fd,(struct sockaddr *)&client_addr,&addrlen);
		if(*client_fd<0)
		{
			break;
		}
		
		/*6. 創(chuàng)建新的線(xiàn)程*/
		if(pthread_create(&thread_id,NULL,pthread_Handler_HTTP_Client,(void*)client_fd)!=0)
		{
			printf("創(chuàng)建處理HTTP客戶(hù)端線(xiàn)程失敗!\n");
			break;
		}
	}
	
	/*7. 關(guān)閉服務(wù)器套接字*/
	close(http_server_fd);
	return 0;
}

1.5 網(wǎng)頁(yè)視頻監(jiān)控的項(xiàng)目代碼_多線(xiàn)程處理

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include  
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include "yuv_to_jpeg.h"

#define UVC_VIDEO_DEVICE "/dev/video15"  /*UVC攝像頭設(shè)備節(jié)點(diǎn)*/
int uvc_video_fd; /*存放攝像頭設(shè)備節(jié)點(diǎn)的文件描述符*/
int video_stop_stat=1; /*視頻停止?fàn)顟B(tài): 1表示正常執(zhí)行,0表示退出*/

unsigned char *video_memaddr_buffer[4]; /*存放的是攝像頭映射出來(lái)的緩沖區(qū)首地址*/
int Image_Width;  /*圖像的寬度*/
int Image_Height; /*圖像的高度*/
unsigned char *jpg_video_buffer=NULL; /*轉(zhuǎn)換之后的JPG數(shù)據(jù)緩沖區(qū)首地址*/
unsigned int jpg_video_size; /*存放當(dāng)前JPG數(shù)據(jù)緩沖區(qū)的大小*/
pthread_mutex_t mutex; /*互斥鎖*/
pthread_cond_t cond;  /*條件變量*/

#define HTTP_SERVER_PORT 1235  /*HTTP服務(wù)器端口號(hào)*/
int http_server_fd; /*HTTP服務(wù)器套接字*/

/*
函數(shù)功能: 處理退出的信號(hào)
*/
void exit_sighandler(int sig)
{
	video_stop_stat=0; //讓攝像頭采集線(xiàn)程自動(dòng)退出
	sleep(2);
	
	/*關(guān)閉服務(wù)器套接字*/
	close(http_server_fd);
	
	//退出進(jìn)程
	exit(1);
}

/*
函數(shù)功能: 向HTTP客戶(hù)端發(fā)送文件數(shù)據(jù)
*/
void HTTPClient_SendFileData(int client_fd,char *type,char *file)
{
	int file_fd;
	int read_len;
	struct stat file_buf;
	unsigned char buffer[1024];
	file_fd=open(file,O_RDONLY);
	if(file_fd<0)
	{
		printf("%s文件打開(kāi)失敗!\n",file);
		return;
	}
	
	/*1. 獲取文件的狀態(tài)信息*/
	stat(file,&file_buf);
	//printf("%d\n",file_buf.st_size);
	
	/*2. 構(gòu)造報(bào)文頭*/
	sprintf(buffer,"HTTP/1.1 200 OK\r\n" \
				   "Content-type:%s\r\n" \
				   "Content-Length:%d\r\n" 
				   "Server: wbyq\r\n" \
				   "\r\n",type,file_buf.st_size);
	
	read_len=strlen(buffer);
	
	/*2. 發(fā)送數(shù)據(jù)*/
	do
	{
		if(write(client_fd,buffer,read_len)<=0)break;
	}while((read_len=read(file_fd,buffer,sizeof(buffer)))>0);
}
/*
函數(shù)功能: 發(fā)送數(shù)據(jù)流
*/
void SendVideoData(int Clientfd)
{
	int image_size;
	unsigned char *image_data; 
	unsigned char buffer[1024];
	
	/*1. 構(gòu)造報(bào)文頭: 回應(yīng)瀏覽器請(qǐng)求,并告訴瀏覽器接下來(lái)需要使用長(zhǎng)連接*/
	sprintf(buffer, "HTTP/1.0 200 OK\r\n" \
					"Server: wbyq\r\n" \
					"Content-Type: multipart/x-mixed-replace;boundary=" "boundarydonotcross" "\r\n" \
					"\r\n" \
					"--" "boundarydonotcross" "\r\n");
	if(write(Clientfd,buffer,strlen(buffer))<0)
	{
		return;
	}
	
	/*2. 循環(huán)發(fā)送數(shù)據(jù)流: JPG圖片*/
	image_data=malloc(Image_Width*Image_Height*3);
	if(image_data==NULL)
	{
		printf("循環(huán)發(fā)送數(shù)據(jù)流緩沖區(qū)申請(qǐng)失敗!\n");
		return;
	}
	while(video_stop_stat)
	{
		//阻塞方式等待條件變量,等待成功并上鎖
		pthread_cond_wait(&cond,&mutex);
		
		image_size=jpg_video_size; //保存圖片的大小
		memcpy(image_data,jpg_video_buffer,image_size);
		
		//互斥鎖解鎖
		pthread_mutex_unlock(&mutex);
		
		/*2.1 構(gòu)造報(bào)文頭: 告訴瀏覽器發(fā)送數(shù)據(jù)類(lèi)型和數(shù)據(jù)的長(zhǎng)度*/
		sprintf(buffer,"Content-type:%s\r\n" \
					   "Content-Length:%d\r\n"\
					   "\r\n","image/jpeg",image_size);
		if(write(Clientfd,buffer,strlen(buffer))<0)
		{
			break;
		}
		
		/*2.2 發(fā)送實(shí)際的數(shù)據(jù)*/
		if(write(Clientfd,image_data,image_size)<0)break;
		
		/*2.3 發(fā)送間隔符號(hào)*/
		sprintf(buffer,"\r\n--" "boundarydonotcross" "\r\n"); //間隔符號(hào)
		if(write(Clientfd,buffer,strlen(buffer))<0)
		{
			break;
		}
	}
	free(image_data); //釋放空間
}
/*
函數(shù)功能: 處理HTTP客戶(hù)端的線(xiàn)程
*/
void *pthread_Handler_HTTP_Client(void *dev)
{
	int Clientfd;
	unsigned char buffer[1024];
	unsigned char *p=buffer;
	struct pollfd fds;
	int poll_state; /*poll函數(shù)的狀態(tài)值*/
	int recv_len;   /*接收的數(shù)據(jù)長(zhǎng)度*/
	if(dev==NULL)
	{
		pthread_exit(NULL); /*終止線(xiàn)程*/
	}
	Clientfd=*(int*)dev; /*保存客戶(hù)端套接字描述符*/
	free(dev); /*釋放空間*/
	
	/*1. 接收客戶(hù)端的請(qǐng)求報(bào)文*/
	fds.fd=Clientfd;
	fds.events=POLLIN;
	while(1)
	{
		/*等待數(shù)據(jù)*/
		poll_state=poll(&fds,1,100);
		if(poll_state<=0)break; /*數(shù)據(jù)接收完畢就退出*/
		recv_len=read(Clientfd,p,1024);
		p+=recv_len;
		if(p-buffer>1024)break;
	}
	
	//printf("buffer=%s\n",buffer);
	
	/*1. 判斷請(qǐng)求的路徑*/
	if(strstr(buffer,"GET / HTTP/1.1"))
	{
		HTTPClient_SendFileData(Clientfd,"text/html","index.html");
	}
	else if(strstr(buffer,"GET /?action=stream HTTP/1.1"))
	{
		SendVideoData(Clientfd); //發(fā)送視頻流數(shù)據(jù)
	}
	else if(strstr(buffer,"GET /favicon.ico HTTP/1.1"))
	{
		HTTPClient_SendFileData(Clientfd,"image/x-icon","123.ico");
	}
	
	close(Clientfd);
}
/*
函數(shù)功能: UVC攝像頭初始化
返回值: 0表示成功
*/
int UVCvideoInit(void)
{
	/*1. 打開(kāi)攝像頭設(shè)備*/
	uvc_video_fd=open(UVC_VIDEO_DEVICE,O_RDWR);
	if(uvc_video_fd<0)
	{
		printf("%s 攝像頭設(shè)備打開(kāi)失敗!\n",UVC_VIDEO_DEVICE);
		return -1;
	}
	
	/*2. 設(shè)置攝像頭的屬性*/
	struct v4l2_format format;
	memset(&format,0,sizeof(struct v4l2_format));
	format.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; /*表示視頻捕獲設(shè)備*/
	format.fmt.pix.width=320;  /*預(yù)設(shè)的寬度*/
	format.fmt.pix.height=240; /*預(yù)設(shè)的高度*/
	format.fmt.pix.pixelformat=V4L2_PIX_FMT_YUYV; /*預(yù)設(shè)的格式*/
	format.fmt.pix.field=V4L2_FIELD_ANY; /*系統(tǒng)自動(dòng)設(shè)置: 幀屬性*/
	if(ioctl(uvc_video_fd,VIDIOC_S_FMT,&format)) /*設(shè)置攝像頭的屬性*/
	{
		printf("攝像頭格式設(shè)置失敗!\n");
		return -2;
	}
	
	Image_Width=format.fmt.pix.width;
	Image_Height=format.fmt.pix.height;
		
	printf("攝像頭實(shí)際輸出的圖像尺寸:x=%d,y=%d\n",format.fmt.pix.width,format.fmt.pix.height);
	if(format.fmt.pix.pixelformat==V4L2_PIX_FMT_YUYV)
	{
		printf("當(dāng)前攝像頭支持YUV格式圖像輸出!\n");
	}
	else
	{
		printf("當(dāng)前攝像頭不支持YUV格式圖像輸出!\n");
		return -3;
	}

	/*3. 請(qǐng)求緩沖區(qū): 申請(qǐng)攝像頭數(shù)據(jù)采集的緩沖區(qū)*/
	struct v4l2_requestbuffers req_buff;
	memset(&req_buff,0,sizeof(struct v4l2_requestbuffers));
	req_buff.count=4; /*預(yù)設(shè)要申請(qǐng)4個(gè)緩沖區(qū)*/
	req_buff.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; /*視頻捕獲設(shè)備*/
	req_buff.memory=V4L2_MEMORY_MMAP; /*支持mmap內(nèi)存映射*/
	if(ioctl(uvc_video_fd,VIDIOC_REQBUFS,&req_buff)) /*申請(qǐng)緩沖區(qū)*/
	{
		printf("申請(qǐng)攝像頭數(shù)據(jù)采集的緩沖區(qū)失敗!\n");
		return -4;
	}
	printf("攝像頭緩沖區(qū)申請(qǐng)的數(shù)量: %d\n",req_buff.count);

	/*4. 獲取緩沖區(qū)的詳細(xì)信息: 地址,編號(hào)*/
	struct v4l2_buffer buff_info;
	memset(&buff_info,0,sizeof(struct v4l2_buffer));
	int i;
	for(i=0;i
                        聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
                        舉報(bào)投訴
                    
  • 視頻監(jiān)控
    +關(guān)注

    關(guān)注

    17

    文章

    1711

    瀏覽量

    65188
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11351

    瀏覽量

    210521
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9335

    瀏覽量

    86149
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    511

    瀏覽量

    31571
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    低空視頻傳輸在望獲實(shí)時(shí)linux系統(tǒng)上的應(yīng)用

    望獲實(shí)時(shí)linux系統(tǒng)因其高確定性和低延遲的特性,在低空視頻傳輸中扮演著關(guān)鍵角色。低空經(jīng)濟(jì)涵蓋無(wú)人機(jī)物流、農(nóng)業(yè)監(jiān)控、低空交通管理等場(chǎng)景,這些場(chǎng)景對(duì)視頻傳輸?shù)膶?shí)時(shí)性、可靠性和高效性有極高
    的頭像 發(fā)表于 01-24 17:21 ?200次閱讀

    雙絞線(xiàn)在視頻監(jiān)控系統(tǒng)中的應(yīng)用 雙絞線(xiàn)連接器的類(lèi)型與選擇

    雙絞線(xiàn)在視頻監(jiān)控系統(tǒng)中的應(yīng)用 視頻監(jiān)控系統(tǒng)是現(xiàn)代安全防范的重要組成部分,它通過(guò)攝像頭捕捉圖像或視頻,并將信號(hào)傳輸?shù)?/div>
    的頭像 發(fā)表于 12-12 13:58 ?247次閱讀

    【畢設(shè)項(xiàng)目參考】嵌入式Linux 10+項(xiàng)目推薦,附項(xiàng)目文檔/源碼/視頻

    又是一年畢設(shè)季,針對(duì)即將開(kāi)始畢業(yè)設(shè)計(jì)的大學(xué)生,我們匯總了10+嵌入式linux項(xiàng)目,供同學(xué)們參考。這些項(xiàng)目覆蓋了多個(gè)領(lǐng)域,希望可以為同學(xué)們提供豐富的靈感來(lái)源。我們鼓勵(lì)同學(xué)們根據(jù)自己的興趣和專(zhuān)業(yè)方向
    的頭像 發(fā)表于 11-19 15:21 ?587次閱讀
    【畢設(shè)<b class='flag-5'>項(xiàng)目</b>參考】嵌入式<b class='flag-5'>Linux</b> 10+<b class='flag-5'>項(xiàng)目</b>推薦,附<b class='flag-5'>項(xiàng)目</b>文檔/源碼/<b class='flag-5'>視頻</b>

    Linux應(yīng)用編程的基本概念

    Linux應(yīng)用編程涉及到在Linux環(huán)境下開(kāi)發(fā)和運(yùn)行應(yīng)用程序的一系列概念。以下是一些涵蓋Linux應(yīng)用編程的基本概念。
    的頭像 發(fā)表于 10-24 17:19 ?297次閱讀

    【免費(fèi)分享】嵌入式Linux開(kāi)發(fā)板【入門(mén)+項(xiàng)目,應(yīng)用+底層】資料包一網(wǎng)打盡,附教程/視頻/源碼...

    ?想要深入學(xué)習(xí)嵌入式Linux開(kāi)發(fā)嗎?現(xiàn)在機(jī)會(huì)來(lái)了!我們?yōu)槌鯇W(xué)者們準(zhǔn)備了一份全面的資料包,包括原理圖、教程、課件、視頻、項(xiàng)目、源碼等,所有資料全部免費(fèi)領(lǐng)取,課程視頻可試看(購(gòu)買(mǎi)后看完整
    的頭像 發(fā)表于 09-05 10:45 ?356次閱讀
    【免費(fèi)分享】嵌入式<b class='flag-5'>Linux</b>開(kāi)發(fā)板【入門(mén)+<b class='flag-5'>項(xiàng)目</b>,應(yīng)用+底層】資料包一網(wǎng)打盡,附教程/<b class='flag-5'>視頻</b>/源碼...

    ai智能視頻監(jiān)控系統(tǒng) OpenCV

    ai智能視頻監(jiān)控系統(tǒng)選用數(shù)字圖像處理、計(jì)算機(jī)視覺(jué)和機(jī)器視覺(jué)技術(shù)性,利用軟件強(qiáng)勁的數(shù)據(jù)處理方法工作能力。ai智能視頻監(jiān)控系統(tǒng)是一種集防盜報(bào)警系統(tǒng)作用和
    的頭像 發(fā)表于 07-08 08:46 ?470次閱讀
    ai智能<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>系統(tǒng) OpenCV

    AI行為識(shí)別視頻監(jiān)控系統(tǒng) Python

    AI行為識(shí)別視頻監(jiān)控系統(tǒng)來(lái)自機(jī)器視覺(jué)技術(shù)的革新。機(jī)器視覺(jué)技術(shù)應(yīng)用是人工智能技術(shù)分析的一個(gè)支系。它可以在圖形和圖象具體內(nèi)容敘述中間創(chuàng)建投射關(guān)聯(lián),使電腦可以根據(jù)圖像處理和剖析比較,進(jìn)而熟悉視頻圖象中
    的頭像 發(fā)表于 07-06 10:36 ?642次閱讀
    AI行為識(shí)別<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>系統(tǒng) Python

    智慧工廠(chǎng)視頻監(jiān)控解決方案 OpenCV

    智能工廠(chǎng)視頻監(jiān)控解決方案以地區(qū)生態(tài)環(huán)境和工廠(chǎng)污染物為關(guān)鍵監(jiān)控目標(biāo)。智能工廠(chǎng)視頻監(jiān)控解決方案根據(jù)線(xiàn)上監(jiān)控
    的頭像 發(fā)表于 07-03 23:00 ?378次閱讀
    智慧工廠(chǎng)<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>解決方案 OpenCV

    平安校園視頻監(jiān)控方案 YOLOv5

    平安校園視頻監(jiān)控方案部署一臺(tái)SuiJi-AI100視頻分析服務(wù)器,平安校園視頻監(jiān)控方案使用校園視頻
    的頭像 發(fā)表于 07-03 22:51 ?359次閱讀
    平安校園<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>方案 YOLOv5

    北亞FB-C6700監(jiān)控視頻分析恢復(fù)系統(tǒng)#視頻監(jiān)控取證

    視頻監(jiān)控
    Frombyte
    發(fā)布于 :2024年06月26日 09:14:15

    電梯遠(yuǎn)程視頻監(jiān)控方案

    隨著科技的不斷發(fā)展,電梯安全已經(jīng)成為人們關(guān)注的重點(diǎn)話(huà)題。為了提高電梯運(yùn)行的安全性和可靠性,電梯遠(yuǎn)程視頻監(jiān)控系統(tǒng)應(yīng)運(yùn)而生。這種系統(tǒng)能夠?qū)崟r(shí)監(jiān)控電梯運(yùn)行狀態(tài),及時(shí)發(fā)現(xiàn)并處理故障,大大提高了電梯
    的頭像 發(fā)表于 05-31 15:51 ?508次閱讀
    電梯遠(yuǎn)程<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>方案

    河道流量監(jiān)測(cè)解決方案_河道監(jiān)測(cè)預(yù)警_水位水質(zhì)監(jiān)測(cè)_視頻監(jiān)控

    視頻監(jiān)控
    計(jì)訊物聯(lián)
    發(fā)布于 :2024年05月28日 15:01:04

    隧道視頻監(jiān)控系統(tǒng)介紹

    隧道視頻監(jiān)控系統(tǒng),采用無(wú)線(xiàn)視頻監(jiān)控系統(tǒng),物理結(jié)構(gòu)分為采集端、數(shù)據(jù)傳輸、監(jiān)控中心三部分。采集端負(fù)責(zé)圖像、報(bào)警信號(hào)的采集,并將采集到的模擬信號(hào)通
    的頭像 發(fā)表于 05-20 15:02 ?940次閱讀
    隧道<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>系統(tǒng)介紹

    微軟網(wǎng)頁(yè)版PPT新增語(yǔ)音識(shí)別及字幕生成功能

    據(jù)報(bào)道,微軟計(jì)劃于今年六月份推出網(wǎng)頁(yè)版PowerPoint全新語(yǔ)音識(shí)別功能。此項(xiàng)功能將能夠監(jiān)控PowerPoint視頻中的聲音,進(jìn)而自動(dòng)生成字幕。
    的頭像 發(fā)表于 05-16 14:36 ?499次閱讀

    網(wǎng)頁(yè)防篡改系統(tǒng)

    的關(guān)鍵之所在。 ? 知攻:網(wǎng)頁(yè)被篡改的方式 網(wǎng)頁(yè)篡改是最為常見(jiàn)的一種黑客攻擊形式。其通過(guò)網(wǎng)頁(yè)應(yīng)用中的漏洞獲取權(quán)限,非法篡改Web應(yīng)用中的內(nèi)容并植入暗鏈、傳播惡意信息,直接危害社會(huì)安全并牟取暴利。
    的頭像 發(fā)表于 02-27 10:42 ?1489次閱讀