導航:首頁 > 操作系統 > linux攝像頭監控

linux攝像頭監控

發布時間:2022-10-11 10:07:43

㈠ 監控平台嵌入式linux攝像頭開發如何入手

我畢業設計做這個,我有十幾篇研究生論文可以參考,源代碼沒有

㈡ 如何在Linux下開發攝像頭驅動

在linux下所有設備都是文件。所以對攝像頭的操作其實就是對文件的操作。USB攝像頭的設備文件就是在/dev目錄下的video0(假如只有一個攝像頭)。在linux下操作攝像頭就是使用v4l2對攝像頭進行視頻的操作,操作步驟如下
1. 打開設備文件。
int fd=open(」/dev/video0″,O_RDWR);
2. 取得設備的capability,看看設備具有什麼功能,比如是否具有視頻輸入,或者音頻輸入輸出等。VIDIOC_QUERYCAP,struct v4l2_capability
v4l2_std_id std;
do {
ret= ioctl(fd, VIDIOC_QUERYSTD, &std);
} while (ret == -1 && errno == EAGAIN);
switch (std) {
case V4L2_STD_NTSC:
//……
case V4L2_STD_PAL:
//……
}

㈢ 如何在Linux上讓監控攝像頭與Motion一起工作

Word中如何設置文字下面的背景顏色? 可以採取下面的方法嘗試改變背景。 一、添加彩色背景 點擊菜單「格式」→「背景」,在顏色板內直接單擊所需顏色。.如果那上面的顏色不合你的要求,也可通過單擊「其他顏色」選取其他顏色。 二、添加漸變、紋理或圖案 同樣操作,單擊「填充效果」可以添加漸變色、紋理或圖案,調節紋理或圖案的顏色。 如果要刪除設置,可執行「格式」→「背景」,然後單擊「無填充顏色」。如果要預覽或列印背景效果,可執行「工具」→「選項」→「列印」選項卡,選中「背景色和圖像」復選框。 三、添加圖片水印 同上操作,單擊「水印」打開「水印」對話框,就可為文檔添加圖片水印或文字水印。例如加上照片或是名字,就會產生版權頁面的效果。 如果要刪除水印,可以通過「水印」對話框中選擇「無水印」即可。另外,水印是針對列印文檔設計的,在WORD的普通視圖、Web版式視圖、大綱視圖和閱讀版式中看不到它們。添加水印後,轉入「頁眉頁腳」視圖,可對水印圖片和藝術字的顏色或大小進行調整。 四、改變文檔風格 如果厭倦了WORD默認的白底黑字文檔風格,可以從「工具」→「選項」→「常規」選項卡,選擇其它文檔風格,如「藍底白字」復選框,換一下風格。

㈣ 如何在Linux下開發攝像頭驅動

在linux下所有設備都是文件。所以對攝像頭的操作其實就是對文件的操作。USB攝像頭的設備文件就是在/dev目錄下的video0(假如只有一個攝像頭)。在linux下操作攝像頭就是使用v4l2對攝像頭進行視頻的操作,操作步驟如下
1. 打開設備文件。
int fd=open(」/dev/video0″,O_RDWR);
2. 取得設備的capability,看看設備具有什麼功能,比如是否具有視頻輸入,或者音頻輸入輸出等。VIDIOC_QUERYCAP,struct v4l2_capability
v4l2_std_id std;
do {
ret= ioctl(fd, VIDIOC_QUERYSTD, &std);
} while (ret == -1 && errno == EAGAIN);
switch (std) {
case V4L2_STD_NTSC:
//……
case V4L2_STD_PAL:
//……
}
3. 選擇視頻輸入,一個視頻設備可以有多個視頻輸入。VIDIOC_S_INPUT,struct v4l2_input(可不要)
4. 設置視頻的制式和幀格式,制式包括PAL,NTSC,幀的格式個包括寬度和高度等。
VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format
struct v4l2_format fmt;
memset ( &fmt, 0, sizeof(fmt) );
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 320;
fmt.fmt.pix.height = 240;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG;
if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0)
{
printf("set format failed\n");
//return 0;
}
5. 向驅動申請幀緩沖,一般不超過5個。struct v4l2_requestbuffers
struct v4l2_requestbuffers req;
memset(&req, 0, sizeof (req));
req.count = 4;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
if (ioctl(fd,VIDIOC_REQBUFS,&req) == -1)
{
perror("VIDIOC_REQBUFS error \n");
//return -1;
}
6.申請物理內存
將申請到的幀緩沖映射到用戶空間,這樣就可以直接操作採集到的幀了,而不必去復制。將申請到的幀緩沖全部入隊列,以便存放採集到的數據.VIDIOC_QBUF,struct v4l2_buffer
VideoBuffer* buffers = calloc( req.count, sizeof(VideoBuffer) );
printf("sizeof(VideoBuffer) is %d\n",sizeof(VideoBuffer));
struct v4l2_buffer buf;
for (numBufs = 0; numBufs < req.count; numBufs++)
{
memset( &buf, 0, sizeof(buf) );
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = numBufs;
if (ioctl(fd, VIDIOC_QUERYBUF, &buf) < 0)
{
printf("VIDIOC_QUERYBUF error\n");
//return -1;
}
printf("buf len is %d\n",sizeof(buf));
//內存映射
buffers[numBufs].length = buf.length;
buffers[numBufs].offset = (size_t) buf.m.offset;
buffers[numBufs].start = mmap (NULL, buf.length,PROT_READ | PROT_WRITE, MAP_SHARED, fd, buf.m.offset);
printf("buffers.length = %d,buffers.offset = %d ,buffers.start[0] = %d\n",buffers[numBufs].length,buffers[numBufs].offset,buffers[numBufs].start[0]);
printf("buf2 len is %d\n",sizeof(buffers[numBufs].start));
if (buffers[numBufs].start == MAP_FAILED)
{
perror("buffers error\n");
//return -1;
}
if (ioctl (fd, VIDIOC_QBUF, &buf) < 0)
{
printf("VIDIOC_QBUF error\n");
//return -1;
}
}
7. 開始視頻的採集。
enum v4l2_buf_type type;
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (ioctl (fd, VIDIOC_STREAMON, &type) < 0)
{
printf("VIDIOC_STREAMON error\n");
// return -1;
}
8. 出隊列以取得已採集數據的幀緩沖,取得原始採集數據。VIDIOC_DQBUF, 將緩沖重新入隊列尾,這樣可以循環採集。VIDIOC_QBUF
if (ioctl(fd, VIDIOC_DQBUF, &buf) < 0)
{
perror("VIDIOC_DQBUF failed.\n");
//return -1;
}
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
unsigned char *ptcur = buffers[numBufs].start;
DEBUG("buf.bytesused = %d \n",buf.bytesused);
int i1;
for(i1=0; i1<buf.bytesused; i1++)
{
if((buffers[numBufs].start[i1] == 0x000000FF) && (buffers[numBufs].start[i1+1] == 0x000000C4))
{
DEBUG("huffman table finded! \nbuf.bytesused = %d\nFFC4 = %d \n",buf.bytesused,i1);
break;
}
}
if(i1 == buf.bytesused)printf("huffman table don't exist! \n");
int i;
for(i=0; i<buf.bytesused; i++)
{
if((buffers[numBufs].start[i] == 0x000000FF) && (buffers[numBufs].start[i+1] == 0x000000D8)) break;
ptcur++;
}
DEBUG("i=%d,FF=%02x,D8=%02x\n",i,buffers[numBufs].start[i],buffers[numBufs].start[i+1]);
int imagesize =buf.bytesused - i;
DEBUG("buf.bytesused = %d \n",buf.bytesused);
DEBUG ("imagesize = %d \n",imagesize);
9. 停止視頻的採集。VIDIOC_STREAMOFF
10. 關閉視頻設備。close(fd);

㈤ 在Linux系統下要如何實現在電腦上使用攝像頭進行錄像做成Video視

升級內核:

1.這里我用的內核是linux-2.6.32.59 版本的,首先下載這個內核

2.下載完畢之後拷貝到Linux中進行解壓,tar jxvf linux-2.6.32.59.tar

3.進入linux-2.6.32.59 目錄把當前內核的配置文件拷貝到當前目錄下cp /boot/config-2.6.18-238.e15 。/.config 因為我當前用的內核是linux-2.6.18版本的`

4.在配置視頻所需要的驅動 make menuconfig 進入之後找到Device Drivers 按回車進入 找到MultiMedia Support先按空格鍵進行選中 再按回車鍵進入找到 Video For Linux 按回車鍵選中 再按空格鍵選中 Video capture adapters 將此選項選中之後按回車鍵進入找到V4L USB devices 按空格鍵選中再按回車鍵進入 找到USB ZC0301[P] ImageProcessor and Control Chip support 按空格鍵選中 再找到《M》GSPCA based webcamsà先按空格鍵選中再按回車鍵進入在最後一項的菜單下選中ZC3XX USB Camera Driver

5.以上配置好之後再次回到頂層菜單,找到General setup-à按回車鍵進入找到[]enable deprecated sysfs features which may confuse old usersp 按空格鍵選中

6.經過4 ,5 兩步驟已經將視頻的驅動配置好退出保存

7.下面進行編譯 make 此步驟大概需要一個小時左右

8.再次進行 make moles_install

9.再次進行 make install

10.此時查看將攝像頭插入USB 再次查看設備文件中是否已經有了 video0 用ls /dev/ 命令查看

11.如果有說明安裝成功

下面是將攝像頭的內容顯示出來

1首先安裝SDL庫在此下載http://www.libsdl.org/release/SDL-1.2.14.tar.gz

2.進行解壓tar zxvf SDL-1.2.15.tar

3.進入目錄 cd SDL-1.2.15 再進入 test目錄 cd test 在test 目錄下配置 。/configure再進行make 則會有許多編譯好的程序隨便運行一個試試

4.在我上傳的資料文件夾中找到servfox-R1_1_3 文件夾進入之後首先將Makefile.i386的名字改為 Makefile ,

5.編譯 make

6. 在我上傳的資料文件夾中找到spcaview-20061208 文件夾進入之後直接make

7.之後將攝像頭插入到USB 介面首先運行servfox-R1_1_3 文件夾中的servfox。/servfox 如果提示出現錯誤則要把列印的錯誤語句在spcav4l.c中找到將錯誤信息刪除知道沒有錯誤出現,再次運行。/servfox -g –w 127.0.0.1:7070 –d /dev/video0

8. 再次運行spcaview 。/ spcaview –g –w 127.0.0.1:7070此時應該在你的虛擬機上就會顯示攝像頭拍出來的視頻注意此時的項目支持網路

㈥ 如何在linux上藉助zoneminder操控linux監控攝像頭

很多很多,GNOME桌面攝像頭工具Cheese,一體化安全監控解決方案ZoneMinder,支持動作檢測的捕捉工具Motion,GNOME桌面下的開源VoIP和會議應用程序Ekiga等。

㈦ 如何藉助Motion操控Linux監控攝像頭

安裝程序應該會創建一個motion群組和用戶,並且將motion用戶添加到video群組。要是安裝程序沒有創建motion群組和用戶,那麼你必須自行創建。還要自行添加到video群組,才能避開煩人的許可權問題。
現在運行motion,看看它是否管用:

它會顯示好多好多行,直到你看到如下內容:
[1] Failed to open video device /dev/video0: No such file or directory [1] Video signal lost - Adding grey image

將你的Web瀏覽器指向localhost:8081,你會看到一幅灰色圖像:

圖2:如果Motion找不到攝像頭,就會顯示灰色圖像。
這很好,因為這表明Motion已正確安裝;你要做的就是對它進行配置。按Ctrl+C組合鍵停止運行。然後,在你的主目錄下創建一個.motion目錄,將默認配置文件拷貝到該目錄中,並將所有權改成歸你所有:
~$ mkdir .motion ~$ sudo cp /etc/motion/motion.conf .motion/ ~$ sudo chown carla:carla .motion/motion.conf

你還需要用來存儲motion所拍攝圖像的一個目錄:
~$ mkdir motion-images

當你啟動Motion後,它會尋找配置文件,先在當前目錄下尋找,然後在~/.motion下尋找,最後在/etc/motion下尋找。現在,編輯你的~/.motion/motion.conf文件――該例子包括基本配置以及與我的Foscam IP攝像頭相關的那些行:

你需要創建用來存儲PID文件的目錄,因為它在motion.conf中表明:
$ sudo mkdir /var/run/motion

現在再試著啟動它:
$ sudo motion [0] Processing thread 0 - config file /home/carla/.motion/motion.conf [0] Motion 3.2.12 Started [0] Motion going to daemon mode

到目前為止很好,現在再試一下localhost:8081

㈧ 如何在Linux下開發攝像頭驅動

在linux下所有設備都是文件。所以對攝像頭的操作其實就是對文件的操作。USB攝像頭的設備文件就是在/dev目錄下的video0(假如只有一個攝像頭)。在linux下操作攝像頭就是使用v4l2對攝像頭進行視頻的操作,操作步驟如下
1. 打開設備文件。
int fd=open(」/dev/video0″,O_RDWR);
2. 取得設備的capability,看看設備具有什麼功能,比如是否具有視頻輸入,或者音頻輸入輸出等。VIDIOC_QUERYCAP,struct v4l2_capability
v4l2_std_id std;
do {
ret= ioctl(fd, VIDIOC_QUERYSTD, &std);
} while (ret == -1 && errno == EAGAIN);
switch (std) {
case V4L2_STD_NTSC:
//……
case V4L2_STD_PAL:
//……
}
3. 選擇視頻輸入,一個視頻設備可以有多個視頻輸入。VIDIOC_S_INPUT,struct v4l2_input(可不要)
4. 設置視頻的制式和幀格式,制式包括PAL,NTSC,幀的格式個包括寬度和高度等。
VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format
struct v4l2_format fmt;
memset ( &fmt, 0, sizeof(fmt) );
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 320;
fmt.fmt.pix.height = 240;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG;
if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0)
{
printf("set format failed\n");
//return 0;
}
5. 向驅動申請幀緩沖,一般不超過5個。struct v4l2_requestbuffers
struct v4l2_requestbuffers req;
memset(&req, 0, sizeof (req));
req.count = 4;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
if (ioctl(fd,VIDIOC_REQBUFS,&req) == -1)
{
perror("VIDIOC_REQBUFS error \n");
//return -1;
}
6.申請物理內存
將申請到的幀緩沖映射到用戶空間,這樣就可以直接操作採集到的幀了,而不必去復制。將申請到的幀緩沖全部入隊列,以便存放採集到的數據.VIDIOC_QBUF,struct v4l2_buffer
VideoBuffer* buffers = calloc( req.count, sizeof(VideoBuffer) );
printf("sizeof(VideoBuffer) is %d\n",sizeof(VideoBuffer));
struct v4l2_buffer buf;
for (numBufs = 0; numBufs < req.count; numBufs++)
{
memset( &buf, 0, sizeof(buf) );
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = numBufs;
if (ioctl(fd, VIDIOC_QUERYBUF, &buf) < 0)
{
printf("VIDIOC_QUERYBUF error\n");
//return -1;
}
printf("buf len is %d\n",sizeof(buf));
//內存映射
buffers[numBufs].length = buf.length;
buffers[numBufs].offset = (size_t) buf.m.offset;
buffers[numBufs].start = mmap (NULL, buf.length,PROT_READ | PROT_WRITE, MAP_SHARED, fd, buf.m.offset);
printf("buffers.length = %d,buffers.offset = %d ,buffers.start[0] = %d\n",buffers[num

㈨ (LINUX系統)通過網口連接網路攝像機,另外一個網口連接無線路由器、我怎麼才能通過IPAD來控制這個攝像機

1、將無線路由器的DHCP功能打開,網段設置為192.168.1.x;
2、將無線路由器設置為Bridge模式;
3、將無線路由器乙太網口IP設置為192.168.1.100;
4、將網路攝像機的IP設置為192.168.1.99;
5、將ipad設置為自動獲取IP。

㈩ 怎樣在嵌入式Linux系統中使用攝像頭

在linux下所有設備都是文件。所以對攝像頭的操作其實就是對文件的操作。USB攝像頭的設備文件就是在/dev目錄下的video0(假如只有一個攝像頭)。在linux下操作攝像頭就是使用v4l2對攝像頭進行視頻的操作,操作步驟如下 1. 打開設備文件。 int fd=op...

閱讀全文

與linux攝像頭監控相關的資料

熱點內容
單片機怎麼測負脈沖 瀏覽:170
魅族備份的app在哪裡 瀏覽:736
java倒三角列印 瀏覽:112
通達信回封板主圖源碼 瀏覽:44
戰地什麼伺服器 瀏覽:299
安卓為什麼老是閃退怎麼辦 瀏覽:803
樂高機器人的編程軟體下載 瀏覽:223
工作中怎麼使用加密狗 瀏覽:735
雲伺服器的後台找不到 瀏覽:98
php逐行寫入文件 瀏覽:912
javaoracleweb 瀏覽:440
京東加密碼怎麼弄 瀏覽:467
單片機程序員培訓 瀏覽:992
PHP商城源代碼csdn 瀏覽:636
怎麼把電腦里文件夾挪出來 瀏覽:693
java流程處理 瀏覽:685
ftp創建本地文件夾 瀏覽:660
腰椎第一節壓縮 瀏覽:738
xp去掉加密屬性 瀏覽:117
2345怎麼壓縮文件 瀏覽:982