色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

Linux驅(qū)動開發(fā)_倒車影像項目介紹

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

【摘要】 介紹Linux下倒車影像的項目,完成攝像頭圖像讀取、超聲波驅(qū)動編寫、超聲波距離讀取。

倒車影像項目

模擬: 汽車中控臺---倒車影像。

組成部分:

1.?LCD屏: 實時顯示攝像頭采集的數(shù)據(jù)。

2.?攝像頭: 放在車尾,采集圖像傳輸給LCD屏進(jìn)行顯示。

3.?倒車?yán)走_(dá): 超聲波測距--->測量車尾距離障礙物的距離。

4.?蜂鳴器: 根據(jù)倒車?yán)走_(dá)測量的距離,控制頻率。

poYBAGMlOu-AOBVRAAAL-jj6-Tw222.png

1.1 超聲波測距模塊

聲波測距: 已知聲音在空氣中傳播的速度。

pYYBAGMlOu-AFmuxAAAmOEe-tck976.pngpoYBAGMlOu-AJBBaAAJM_tHZFyQ036.pngpYYBAGMlOvCAKLPrAAdGSZnRjh0757.pngpoYBAGMlOvGAEFCHAAE1wfYJhgU050.png

??硬件接線:

poYBAGMlOvWAAQJpAA3s6Fdq0JA662.png

ECHO------->GPX1_0 (開發(fā)板第9個IO口): 中斷引腳----->檢測回波----輸入

TRIG ------->GPB_7 (開發(fā)板第8個IO口): 輸出觸發(fā)信號

1.2 PWM方波控制蜂鳴器

??PWM方波:

pYYBAGMlOvWAaetGAAANcrhJPCc509.pngpYYBAGMlOviAP6BdAAwht2kb2FQ071.pngpoYBAGMlOvqAIdZzAAe3isRutmE616.png

??內(nèi)核自帶的PWM方波驅(qū)動

pYYBAGMlOvuAVshAAACvomxi1OI945.png

1.3 UVC免驅(qū)攝像頭編程框架: V4L2

編程的框架: v4l2--->全稱: video4linux2

V4L2 : 針對UVC免驅(qū)USB設(shè)備設(shè)計框架。專用于USB攝像頭的數(shù)據(jù)采集。

免驅(qū) : 驅(qū)動已經(jīng)成為標(biāo)準(zhǔn),屬于內(nèi)核自帶源碼的一部分。

V4L2框架本身注冊的也是字符設(shè)備,設(shè)備節(jié)點: /dev/videoX

V4L2 框架: 提供ioctl接口,提供了有很多命令,可以通過這些命令對攝像頭做配置。

比如: 輸出的圖像尺寸,輸出圖像格式(RGB、YUV、JPG),申請采集數(shù)據(jù)的緩沖區(qū)。

poYBAGMlOvuAKskKAAEWG4P52zg183.pngpYYBAGMlOvuAWkiOAACnVBFUccw164.png

??配置攝像頭采集隊列步驟:

poYBAGMlOvuALkJwAACbwCG0l5Y794.png

Mmap函數(shù)映射。

超聲波驅(qū)動讀取距離:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

static unsigned int distance_irq; /*存放中斷號*/
static u32 *GPB_DAT=NULL;
static u32 *GPB_CON=NULL;

static u32 distance_time_us=0; /*表示距離的時間*/

/*
工作隊列處理函數(shù): 
*/
static void distance_work_func(struct work_struct *work)
{
	u32 time1,time2;
	time1=ktime_to_us(ktime_get()); /*獲取當(dāng)前時間,再轉(zhuǎn)換為 us 單位*/

	/*等待高電平時間結(jié)束*/
	while(gpio_get_value(EXYNOS4_GPX1(0))){}
	
	time2=ktime_to_us(ktime_get()); /*獲取當(dāng)前時間,再轉(zhuǎn)換為 us 單位*/

	distance_time_us=time2-time1;
	//printk("us=%d\n",time2-time1);   /*us/58=厘米*/
}

/*靜態(tài)方式初始化工作隊列*/
static DECLARE_WORK(distance_work,distance_work_func);

/*
中斷處理函數(shù): 用于檢測超聲波測距的回波
*/
static irqreturn_t distance_handler(int irq, void *dev)
{
	/*調(diào)度工作隊列*/
	schedule_work(&distance_work);
	return IRQ_HANDLED;
}

static void distance_function(unsigned long data);
/*靜態(tài)方式定義內(nèi)核定時器*/
static DEFINE_TIMER(distance_timer,distance_function,0,0);

/*內(nèi)核定時器超時處理函數(shù): 觸發(fā)超聲波發(fā)送方波*/
static void distance_function(unsigned long data)
{
	static u8 state=0;
	state=!state;
	
	/*更改GPIO口電平*/
	if(state)
	{
		*GPB_DAT|=1<<7;
	}
	else
	{
		*GPB_DAT&=~(1<<7);
	}
	
	/*修改定時器的超時時間*/
	mod_timer(&distance_timer,jiffies+msecs_to_jiffies(100));
}

static int distance_open(struct inode *inode, struct file *file)
{
	return 0;
}

#define GET_US_TIME 0x45612
static long distance_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long argv)
{
	u32 *us_data=(u32*)argv;
	int err;
	u32 time_us=distance_time_us;
	switch(cmd)
	{
		case GET_US_TIME:
			err=copy_to_user(us_data,&time_us,4);
			if(err!=0)printk("拷貝失敗!\n");
			break;
	}
	return 0;
}

static int distance_release(struct inode *inode, struct file *file)
{
	return 0;
}

/*定義文件操作集合*/
static struct file_operations distance_fops=
{
	.open=distance_open,
	.unlocked_ioctl=distance_unlocked_ioctl,
	.release=distance_release
};
/*定義雜項設(shè)備結(jié)構(gòu)體*/
static struct miscdevice distance_misc=
{
	.minor=MISC_DYNAMIC_MINOR,
	.name="tiny4412_distance",
	.fops=&distance_fops
};

static int __init tiny4412_distance_dev_init(void) 
{
	int err;
	/*1. 映射GPIO口地址*/
	GPB_DAT=ioremap(0x11400044,4);
	GPB_CON=ioremap(0x11400040,4);

	*GPB_CON&=~(0xF<<4*7);
	*GPB_CON|=0x1<<4*7; /*配置輸出模式*/
	
	/*2. 根據(jù)GPIO口編號,獲取中斷號*/
	distance_irq=gpio_to_irq(EXYNOS4_GPX1(0));
	
	/*3. 注冊中斷*/
	err=request_irq(distance_irq,distance_handler,IRQ_TYPE_EDGE_RISING,"distance_device",NULL);
	if(err!=0)printk("中斷注冊失敗!\n");
	else printk("中斷:超聲波測距驅(qū)動安裝成功!\n");

	/*4. 修改定時器超時時間*/
	mod_timer(&distance_timer,jiffies+msecs_to_jiffies(100));

	/*雜項設(shè)備注冊*/
	misc_register(&distance_misc);
	return 0;
}

static void __exit tiny4412_distance_dev_exit(void) 
{
	/*5. 注銷中斷*/
	free_irq(distance_irq,NULL);

	/*6. 停止定時器*/
	del_timer(&distance_timer);
	
	/*7. 取消IO映射*/
	iounmap(GPB_DAT);
	iounmap(GPB_CON);

	/*注銷雜項設(shè)備*/
	misc_deregister(&distance_misc);
	
	printk("中斷:超聲波測距驅(qū)動卸載成功!\n");
}

module_init(tiny4412_distance_dev_init);
module_exit(tiny4412_distance_dev_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("tiny4412 wbyq");

攝像頭代碼,讀取攝像頭畫面:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include "framebuffer.h"

#define PWM_DEVICE "/dev/pwm"  /*PWM方波設(shè)備文件*/
#define DISTANCE_DEVICE "/dev/tiny4412_distance" /*超聲波測距設(shè)備文件*/
#define UVC_VIDEO_DEVICE "/dev/video15"  /*UVC攝像頭設(shè)備節(jié)點*/

#define GET_US_TIME 0x45612     /*獲取超聲波測量的距離: ioctl命令*/
#define PWM_IOCTL_SET_FREQ		1 /*控制PWM方波頻率: ioctl命令*/
#define PWM_IOCTL_STOP			0 /*停止PWM方波輸出: ioctl命令*/

int distance_fd;  /*超聲波設(shè)備的文件描述符*/
int pwm_fd;       /*PWM方波設(shè)備的文件描述符*/
int uvc_video_fd; /*UVC攝像頭設(shè)備文件描述符*/
int Image_Width;  /*圖像的寬度*/
int Image_Height; /*圖像的高度*/
unsigned char *video_memaddr_buffer[4]; /*存放攝像頭映射到進(jìn)程空間的緩沖區(qū)地址*/

/*
函數(shù)功能: 用戶終止了進(jìn)程調(diào)用
*/
void exit_sighandler(int sig)
{
	//停止PWM波形輸出,關(guān)閉蜂鳴器
	ioctl(pwm_fd,PWM_IOCTL_STOP,0);
	close(pwm_fd);
	close(distance_fd);
	exit(1);
}

/*
函數(shù)功能: 讀取超聲波數(shù)據(jù)的線程
*/
void *distance_Getpthread_func(void *dev)
{
	/*1. 打開PWM方波驅(qū)動*/
	pwm_fd=open(PWM_DEVICE,O_RDWR);
	if(pwm_fd<0) //0 1 2
	{
		printf("%s 設(shè)備文件打開失敗\n",PWM_DEVICE);
		/*退出線程*/
		pthread_exit(NULL); 
	}

	/*2. 打開超聲波測距設(shè)備*/
	distance_fd=open(DISTANCE_DEVICE,O_RDWR);
	if(distance_fd<0) //0 1 2
	{
		printf("%s 設(shè)備文件打開失敗\n",DISTANCE_DEVICE);
		/*退出線程*/
		pthread_exit(NULL); 
	}

	/*3. 循環(huán)讀取超聲波測量的距離*/
	struct pollfd fds;
	fds.fd=distance_fd;
	fds.events=POLLIN;
	int data;
	while(1)
	{
		poll(&fds,1,-1);
		ioctl(distance_fd,GET_US_TIME,&data);
		printf("距離(cm):%0.2f\n",data/58.0);
		data=data/58;
		if(data>200) /*200厘米: 安全區(qū)域*/
		{
			//停止PWM波形輸出,關(guān)閉蜂鳴器
			ioctl(pwm_fd,PWM_IOCTL_STOP,0);
		}
		else if(data>100) /*100厘米: 警告區(qū)域*/
		{
			printf("警告區(qū)域!\n");
			ioctl(pwm_fd,PWM_IOCTL_SET_FREQ,2);
		}
		else /*小于<100厘米: 危險區(qū)域*/
		{
			printf(" 危險區(qū)域!\n");
			ioctl(pwm_fd,PWM_IOCTL_SET_FREQ,10);
		}
		
		//ioctl(pwm_fd,PWM_IOCTL_SET_FREQ,pwm_data);
		/*倒車影像: 測距有3個檔位*/
	}
}
/*
函數(shù)功能: UVC攝像頭初始化
返回值: 0表示成功
*/
int UVCvideoInit(void)
{
	/*1. 打開攝像頭設(shè)備*/
	uvc_video_fd=open(UVC_VIDEO_DEVICE,O_RDWR);
	if(uvc_video_fd<0)
	{
		printf("%s 攝像頭設(shè)備打開失敗!\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=800;  /*預(yù)設(shè)的寬度*/
	format.fmt.pix.height=480; /*預(yù)設(shè)的高度*/
	format.fmt.pix.pixelformat=V4L2_PIX_FMT_YUYV; /*預(yù)設(shè)的格式*/
	format.fmt.pix.field=V4L2_FIELD_ANY; /*系統(tǒ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("攝像頭實際輸出的圖像尺寸: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ū): 申請攝像頭數(shù)據(jù)采集的緩沖區(qū)*/
	struct v4l2_requestbuffers req_buff;
	memset(&req_buff,0,sizeof(struct v4l2_requestbuffers));
	req_buff.count=4; /*預(yù)設(shè)要申請4個緩沖區(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ū)*/
	{
		printf("申請攝像頭數(shù)據(jù)采集的緩沖區(qū)失敗!\n");
		return -4;
	}
	printf("攝像頭緩沖區(qū)申請的數(shù)量: %d\n",req_buff.count);

	/*4. 獲取緩沖區(qū)的詳細(xì)信息: 地址,編號*/
	struct v4l2_buffer buff_info;
	memset(&buff_info,0,sizeof(struct v4l2_buffer));
	int i;
	for(i=0;i> 8;
		g = (y - (88 * u) - (183 * v)) >> 8;
		b = (y + (454 * u)) >> 8;

		*(ptr++) = (r > 255) ? 255 : ((r < 0) ? 0 : r);
		*(ptr++) = (g > 255) ? 255 : ((g < 0) ? 0 : g);
		*(ptr++) = (b > 255) ? 255 : ((b < 0) ? 0 : b);
			
		if(z++)
		{
			z = 0;
			yuyv += 4;
		}
	}
}

int main(int argc,char **argv)
{
	int data;
	
	/*1. 注冊將要捕獲的信號*/
	signal(SIGINT,exit_sighandler);

	/*2. 創(chuàng)建線程: 采集超聲波測量的距離*/
	pthread_t threadID;
	pthread_create(&threadID,NULL,distance_Getpthread_func,NULL);
	pthread_detach(threadID); //設(shè)置分離屬性

	/*3. 初始化攝像頭*/
	UVCvideoInit();

	/*4. 初始化LCD屏*/
	framebuffer_Device_init();
	
	/*5. 循環(huán)采集攝像頭的數(shù)據(jù)*/
	struct pollfd fds;
	fds.fd=uvc_video_fd;
	fds.events=POLLIN;

	struct v4l2_buffer buff_info;
	memset(&buff_info,0,sizeof(struct v4l2_buffer));
	int index=0; /*表示當(dāng)前緩沖區(qū)的編號*/
	unsigned char *rgb_buffer=NULL;

	/*申請空間:存放轉(zhuǎn)換之后的RGB數(shù)據(jù)*/
	rgb_buffer=malloc(Image_Width*Image_Height*3);
	if(rgb_buffer==NULL)
	{
		printf("RGB轉(zhuǎn)換的緩沖區(qū)申請失敗!\n");
		exit(0);
	}
	
	while(1)
	{
		/*1. 等待攝像頭采集數(shù)據(jù)*/
		poll(&fds,1,-1); 

		/*2. 取出一幀數(shù)據(jù): 從采集隊列里面取出一個緩沖區(qū)*/
		buff_info.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;   /*視頻捕獲設(shè)備*/
		ioctl(uvc_video_fd,VIDIOC_DQBUF,&buff_info); /*從采集隊列取出緩沖區(qū)*/
		index=buff_info.index;
		//printf("采集數(shù)據(jù)的緩沖區(qū)的編號:%d\n",index);

		/*3. 處理數(shù)據(jù): YUV轉(zhuǎn)RGB\顯示到LCD屏*/
		//video_memaddr_buffer[index]; /*當(dāng)前存放數(shù)據(jù)的緩沖區(qū)地址*/

		/*3.1 將YUV數(shù)據(jù)轉(zhuǎn)為RGB格式*/
		yuv_to_rgb(video_memaddr_buffer[index],rgb_buffer,Image_Width,Image_Height);

		/*3.2 將RGB數(shù)據(jù)實時刷新到LCD屏幕上*/
		framebuffer_DisplayImages((800-Image_Width)/2,0,Image_Width,Image_Height,rgb_buffer);
		
		/*4. 將緩沖區(qū)再次放入采集隊列*/
		buff_info.memory=V4L2_MEMORY_MMAP; 	/*支持mmap內(nèi)存映射*/
		buff_info.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; /*視頻捕獲設(shè)備*/
		buff_info.index=index; /*緩沖區(qū)的節(jié)點編號*/
		ioctl(uvc_video_fd,VIDIOC_QBUF,&buff_info); /*根據(jù)節(jié)點編號將緩沖區(qū)放入隊列*/
	}
	return 0;
};i++)>
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11322

    瀏覽量

    209874
  • 攝像頭
    +關(guān)注

    關(guān)注

    60

    文章

    4851

    瀏覽量

    95930
  • 倒車影像
    +關(guān)注

    關(guān)注

    1

    文章

    42

    瀏覽量

    5759
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    安泰功率放大器在倒車雷達(dá)傳感器測試中的應(yīng)用介紹

    和可靠性。本文將介紹功率放大器在倒車雷達(dá)傳感器測試中的應(yīng)用,強(qiáng)調(diào)其重要性和功能。 倒車雷達(dá)傳感器工作原理 首先,讓我們了解一下倒車雷達(dá)傳感器的工作原理。這些傳感器通常使用毫米波雷達(dá)技術(shù)
    的頭像 發(fā)表于 09-06 11:34 ?376次閱讀
    安泰功率放大器在<b class='flag-5'>倒車</b>雷達(dá)傳感器測試中的應(yīng)用<b class='flag-5'>介紹</b>

    北京迅為RK3568開發(fā)板嵌入式學(xué)習(xí)之Linux驅(qū)動全新更新-CAN+

    北京迅為RK3568開發(fā)板嵌入式學(xué)習(xí)之Linux驅(qū)動全新更新-CAN+
    的頭像 發(fā)表于 09-04 15:29 ?546次閱讀
    北京迅為RK3568<b class='flag-5'>開發(fā)</b>板嵌入式學(xué)習(xí)之<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動</b>全新更新-CAN+

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個復(fù)雜的過程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動開發(fā)、應(yīng)用程序開發(fā)等多個方面。以下是嵌入式
    的頭像 發(fā)表于 09-02 09:11 ?549次閱讀

    linux開發(fā)板和單片機(jī)開發(fā)的區(qū)別

    硬件架構(gòu) Linux開發(fā)板和單片機(jī)開發(fā)在硬件架構(gòu)上有很大的區(qū)別。Linux開發(fā)板通常基于ARM、x86或其他處理器架構(gòu),具有較高的處理能力和
    的頭像 發(fā)表于 08-30 15:30 ?1024次閱讀

    linux系統(tǒng)的設(shè)備驅(qū)動一般分幾類

    視頻設(shè)備驅(qū)動 USB設(shè)備驅(qū)動 其他設(shè)備驅(qū)動 下面將對這些設(shè)備驅(qū)動進(jìn)行詳細(xì)的介紹。 字符設(shè)備驅(qū)動
    的頭像 發(fā)表于 08-30 15:13 ?467次閱讀

    Linux設(shè)備驅(qū)動程序分類有哪些

    Linux設(shè)備驅(qū)動程序是操作系統(tǒng)與硬件設(shè)備之間的橋梁,負(fù)責(zé)實現(xiàn)硬件設(shè)備與操作系統(tǒng)之間的通信和控制。Linux設(shè)備驅(qū)動程序的分類繁多,可以根據(jù)不同的標(biāo)準(zhǔn)進(jìn)行分類。 按硬件類型分類
    的頭像 發(fā)表于 08-30 15:11 ?618次閱讀

    linux驅(qū)動程序如何加載進(jìn)內(nèi)核

    Linux系統(tǒng)中,驅(qū)動程序是內(nèi)核與硬件設(shè)備之間的橋梁。它們允許內(nèi)核與硬件設(shè)備進(jìn)行通信,從而實現(xiàn)對硬件設(shè)備的控制和管理。 驅(qū)動程序的編寫 驅(qū)動程序的編寫是
    的頭像 發(fā)表于 08-30 15:02 ?521次閱讀

    linux驅(qū)動程序的編譯方法是什么

    Linux驅(qū)動程序的編譯方法主要包括兩種: 與內(nèi)核一起編譯 和 編譯成獨立的內(nèi)核模塊 。以下是對這兩種方法的介紹: 一、與內(nèi)核一起編譯 與內(nèi)核一起編譯意味著將驅(qū)動程序的源代碼直接集成到
    的頭像 發(fā)表于 08-30 14:46 ?663次閱讀

    Linux 驅(qū)動開發(fā)與應(yīng)用開發(fā),你知道多少?

    一、Linux驅(qū)動開發(fā)與應(yīng)用開發(fā)的區(qū)別開發(fā)層次不同:Linux
    的頭像 發(fā)表于 08-30 12:16 ?848次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>與應(yīng)用<b class='flag-5'>開發(fā)</b>,你知道多少?

    影像儀AI運用 #AI #影像測量 #中圖影像儀 #自動控制技術(shù)

    AI影像
    中圖儀器
    發(fā)布于 :2024年07月01日 16:20:07

    因為延遲低,所以倒車影像全都用模擬攝像頭?

    電子發(fā)燒友網(wǎng)報道(文/梁浩斌)最近有博主在某社交平臺上發(fā)布視頻宣稱,“再好的數(shù)字監(jiān)控也有半秒到一秒的延遲,而模擬信號傳輸?shù)谋O(jiān)控幾乎沒有延遲,因此汽車倒車影像一定都是模擬攝像頭。” ? 從原理上看
    的頭像 發(fā)表于 03-08 09:07 ?5370次閱讀
    因為延遲低,所以<b class='flag-5'>倒車影像</b>全都用模擬攝像頭?

    fpga開發(fā)板與linux開發(fā)板區(qū)別

    FPGA開發(fā)板與Linux開發(fā)板是兩種不同的硬件開發(fā)平臺,各自具有不同的特點和應(yīng)用場景。在以下的文章中,我將詳細(xì)介紹FPGA
    的頭像 發(fā)表于 02-01 17:09 ?2330次閱讀

    盤點那些硬件+項目學(xué)習(xí)套件:STM32MP157 Linux開發(fā)板及入門常見問題解答

    來盤點一下,比較受歡迎幾款“硬件+項目”學(xué)習(xí)套件,以及一些初學(xué)者比較關(guān)注的問題。 盤點一:STM32MP157 Linux開發(fā)板 ▋開發(fā)板標(biāo)識圖 ▋
    發(fā)表于 02-01 14:25

    嵌入式Linux開發(fā)的三種方式

    嵌入式Linux開發(fā)主要有三種方式:裸機(jī)開發(fā)、SDK開發(fā)驅(qū)動開發(fā)
    的頭像 發(fā)表于 01-22 14:22 ?998次閱讀
    主站蜘蛛池模板: 观看免费做视频| 亚洲 欧美 日韩 卡通 另类| 99精品久久精品一区二区| 少妇高潮惨叫久久久久久电影| 红色机尾快播| 俄罗斯呦呦| 91蜜桃视频| 亚洲久热无码中文字幕| 人人碰79免费视频| 露露的性战k8经典| 黄色三级网址| 国产免国产免费| 丰满的大白屁股ass| 99精品中文字幕在线观看| 一手揉着乳头一手模仿抽插视频 | 老师你奶真大下面水真多| 国产精品成人网| 俄罗斯1819y0u| sao虎影院桃红视频在线观看| 综合久久久久久久综合网| 亚洲久久少妇中文字幕| 窝窝午夜色视频国产精品东北| 人妖和美女玩| 啪啪做羞羞事小黄文| 男人的天堂MV在线视频免费观看 | 色www.亚洲免费视频| 欧美成人无码视频午夜福利| 久久婷婷色一区二区三区| 精品国产麻豆免费人成网站| 国产亚洲精品97在线视频一| 国产成人精品男人的天堂网站| 草莓视频在线看免费高清观看 | 国产区精品综合在线| 国产成人综合网在线观看| 动漫护士被乳羞羞漫| 超清无码波多野吉衣与黑人| voyeurhit农村夫妻偷拍| adc我们的永久网址| 99久久99久久久精品久久| 99精品国产福利在线观看| 91国内精品久久久久免费影院|