2015-11-26 13:56:43 sophiewx1 阅读数 545
  • 三个大项目(数码相框、摄像头驱动和电源管理),...

    包括3个大项目和若干衍生项目,涵盖:数码相框、电子书、指针、链表、Makefile、网络编程Socket、USB摄像头、CMOS摄像头、视频监控、WIFI、3G网卡、ALSA声卡、便携式视频监控(局域网通信)和电源管理。 总体格调:应用为主驱动为辅,手把手现场写代码,再现项目实现过程

    42288 人正在学习 去看看 韦东山

【草稿丢图】本来是有很多图的,结果保存草稿重启电脑以后发现图全部丢掉了,大家只能看描述了~~快哭了

有些文章说用OpenCV就能实现多摄像头采集图像的工作,实际上我试了一下,出现了以下这篇博文相同的情况:http://blog.csdn.net/chenyusiyuan/article/details/4643313

只能打开其中一个摄像头,另一个屏幕是灰色的。所以我转用DirectShow来进行图像的采集。

但是DirectShow 的配置是件非常麻烦的事情,参考博文:http://blog.csdn.net/misskissc/article/details/8846392

别以为这个过程会一帆风顺,由于我安装VS的时候并没有把所有的组件全安装上(太占地方了好吗),在安装上述补丁的时候就会出现以下情况:



呵呵~~查了相关资料,网上给出的回答:http://blog.163.com/quan2006@126/blog/static/170228635201291744932953/

OK,那照做吧~~结果发现打开自己的注册表,只找到了Microsoft,并没有VSTO Designtime Setup...(找注册表最担心的事情发生了)。然后查了资料,发现是需要重新安装一下VSTO:http://www.cnblogs.com/hiizsk/archive/2011/07/02/2096408.html,但是VSTO是什么,在哪里?VSTO(Visual Studio Toolbox for Office),所以去VS的安装包里找吧,重新选择修复或删除那个选项,安装一下就可以了~


我的汉化版的是上面那个开发人员工具,英文是 Microsoft Office Developer Tools,点击更新~


慢着!有些童鞋可能发现了安装路径是C盘,我是想换成D盘的,但是这里改不了,想着可能需要重新安装VS, 好吧,大不了重新安装,也不能拖慢自己的电脑。但是查了资料发现VS好多组件只能安装在C盘,因为是系统支持组件。之所以我之前把VS安在了C盘,可能也是这个原因吧,那就不改了,也就33M而已。。。

装完了之后,再安装SP1补丁,果然界面不一样了呢~


看来安装是个很漫长的过程~~别出什么问题才好


Luckily, there is no problem~~


重启之后安装VC-Compiler-KB2519277.exe!! 

DONE!

结果,按照上面配置后,编译会出现这样的问题:


好吧,试着按照4 .filter 来配置:

还是不行,我找到了这个文件,是在DirectShow的Include文件中,估计我没有包含这个文件,包含上后,出现了一下一系列问题:



我估计是文件包含的顺序不正确,我误解了网上的文件顺序,大家都是截图式的给提供顺序,所以我们包含的时候应该按照倒序

包含目录:


库目录:


别忘了把DirectShow的包含和库再加上


一定要注意添加“附加依赖项”

但是今天一直没能解决这个问题,查了好多资料不是出现这种情况,就是出现error C2504的情况,先上传吧,等问题解决了再做补充。


2019-05-28 10:05:27 Mr_FengT 阅读数 1378
  • 三个大项目(数码相框、摄像头驱动和电源管理),...

    包括3个大项目和若干衍生项目,涵盖:数码相框、电子书、指针、链表、Makefile、网络编程Socket、USB摄像头、CMOS摄像头、视频监控、WIFI、3G网卡、ALSA声卡、便携式视频监控(局域网通信)和电源管理。 总体格调:应用为主驱动为辅,手把手现场写代码,再现项目实现过程

    42288 人正在学习 去看看 韦东山

在做深度学习的时候,难免会用到摄像头采集图像。在这个就会用到python调用摄像头+opencv图像处理。视频图像的处理和单幅图片处理是一样的,视频就是很多单幅图像连续播放。每秒播放(采集)的图片数量叫帧率。

import cv2
#########图像读取部分
cap=cv2.VideoCapture('2.wmv') #调用目录下的视频
#cap=cv2.VideoCapture(0)  #调用摄像头‘0’一般是打开电脑自带摄像头,‘1’是打开外部摄像头(只有一个摄像头的情况)
width=1280
height=960
cap.set(cv2.CAP_PROP_FRAME_WIDTH,width)#设置图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,height)#设置图像高度
#显示图像
while True: 
    ret,frame=cap.read()#读取图像(frame就是读取的视频帧,对frame处理就是对整个视频的处理)
    print(ret)#
    #######例如将图像灰度化处理,
    img=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#转灰度图
    cv2.imshow("img",img)
    ########图像不处理的情况
    cv2.imshow("frame",frame)    

    input=cv2.waitKey(20)
    if input==ord('q'):#如过输入的是q就break,结束图像显示,鼠标点击视频画面输入字符
        break
    
cap.release()#释放摄像头
cv2.destroyAllWindows()#销毁窗口
   

 
###########图像处理部分
img=cv2.imread("1.jpg",cv2.IMREAD_COLOR)#读入图片,后面的参数是怎么读取图片一般有灰度,全彩等
#img=cv.imread('E:\pytest\1.png')  #或者直接读取该路径下的图片
#cv2.imshow("src",img[:,:,0])

px=img[0,0,2]#img 第一个参数,第二个参数是像素坐标;第三个坐标是rgb三通道。取值(0,1,2)
print(px)
img[100,100]=(0,0,0)#更改指定坐标的像素

#con=img[0:200,0:200]#扣矩形区域的图
img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转灰度图
blur=cv2.GaussianBlur(img,(5,5),0)#高斯滤波
ret3,th3=cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#二值化
#cv2.imshow("gaussianblur",th3)
#cv2.imshow("sec",img)
#cv2.imwrite("1-1.jpg",255-img)

cv2.waitKey(0) 

 

2017-03-09 14:36:03 qq_27531383 阅读数 13652
  • 三个大项目(数码相框、摄像头驱动和电源管理),...

    包括3个大项目和若干衍生项目,涵盖:数码相框、电子书、指针、链表、Makefile、网络编程Socket、USB摄像头、CMOS摄像头、视频监控、WIFI、3G网卡、ALSA声卡、便携式视频监控(局域网通信)和电源管理。 总体格调:应用为主驱动为辅,手把手现场写代码,再现项目实现过程

    42288 人正在学习 去看看 韦东山

一、摄像头的属性

imaqhwinfo()可以了解摄像头的属性,他返回一个结构体,结构体中有摄像头的ID——DeviceID,和摄像头的信息——DeviceInfo;

Camera_in=imaqhwinfo('winvideo')
Camera_in.DeviceInfo.DeviceID
Camera_in.DeviceInfo.SupportedFormats

SupportedFormats储存着摄像头支持的视频格式
我的摄像头支持的格式:
1 至 6 列
'MJPG_1280x720' 'MJPG_160x120' 'MJPG_176x144' 'MJPG_320x180' 'MJPG_320x240' 'MJPG_352x288'
7 至 12 列
'MJPG_640x360' 'MJPG_640x480' 'YUY2_1280x720' 'YUY2_160x120' 'YUY2_176x144' 'YUY2_320x180'
13 至 16 列
'YUY2_320x240' 'YUY2_352x288' 'YUY2_640x360' 'YUY2_640x480'
注解:MJPG、YUY2是两种视频格式,数字表示分辨率。

二、读取摄像头

1、MATLAB自带读取摄像头工具箱这里写图片描述 点击这个会弹出一个窗口这里写图片描述然后选中一个图片格式点击“Start Preview”就会显示图像,点击Stop关闭。
2、调用函数videoinput():
第一步创建视频输入对象:

video=videoinput('winvideo',2);

第一个参数是winvideo是适配器名称,第二个是DeviceID(摄像头ID);

第二步显示所创建的视频对象:

preview(video);

这样摄像头就能够被调出来显示摄像头正在拍摄的画面了。
改变视频格式:

video=videoinput('winvideo',2,'YUY2_1280x720');

改变视频色彩:

set(video,'ReturnedColorSpace','grayscale');%彩色是把grayscale改成rgb

三、读取双目摄像头:
首先查出双目摄像头的ID,我的笔记本内置摄像头ID为 1,双目摄像头的ID分别为2、3;
我想的是重复上面的程序直接调用两个摄像头。

clc;clear;close all;

%%1、读取显示摄像头:
vid=videoinput('winvideo',2);%创建视频输入对象
set(vid,'ReturnedColorSpace','rgb');%显示灰色图像grayscale,彩色第三个参数为rgb
preview(vid);%显示所创建的视频对象

%%操作第二个摄像头
vid=videoinput('winvideo',3);%创建视频输入对象
set(vid,'ReturnedColorSpace','rgb');%显示灰色图像grayscale,彩色第三个参数为rgb
preview(vid);%显示所创建的视频对象
2017-05-05 15:48:30 tom_8899_li 阅读数 855
  • 三个大项目(数码相框、摄像头驱动和电源管理),...

    包括3个大项目和若干衍生项目,涵盖:数码相框、电子书、指针、链表、Makefile、网络编程Socket、USB摄像头、CMOS摄像头、视频监控、WIFI、3G网卡、ALSA声卡、便携式视频监控(局域网通信)和电源管理。 总体格调:应用为主驱动为辅,手把手现场写代码,再现项目实现过程

    42288 人正在学习 去看看 韦东山

通过摄像头图像处理案例来说明Spark流处理性能评估新方法及性能调优参数调试

1、Spark Streaming处理摄像头图像
2、Spark Streaming新的性能评估方式
3、Spark Streaming性能调优参数的使用

对于图像处理,数据肯定是在RDD中的,Receiver接收到数据后放在缓存中,然后按照特定的时间周期通过BlockManager存储数据,对于图像处理而言,数据肯定是有特定格式的,在处理的时候HOG进行特征的提取与检测等

在做这个项目的时候,我们采用了自己实现的算法来对性能进行评估,这里主要是写了一个自己的算法实现对CPU使用率的监控,并且通过调优一些参数来提升对Spark Streaming性能的优化。

假设Spark Streaming可以使用n个Core,我们设定每个Core在特定时间里使用的状态为
CPU的占用率
p=nn=1mt=1Cnt1mn

其中Cnt取值0,1

Receiver设置在2-5个比较好

Spark Streaming总共使用的Cores的总数 = receivers * BatchDuration / blockInterval

2015-10-18 21:00:37 u010684134 阅读数 2419
  • 三个大项目(数码相框、摄像头驱动和电源管理),...

    包括3个大项目和若干衍生项目,涵盖:数码相框、电子书、指针、链表、Makefile、网络编程Socket、USB摄像头、CMOS摄像头、视频监控、WIFI、3G网卡、ALSA声卡、便携式视频监控(局域网通信)和电源管理。 总体格调:应用为主驱动为辅,手把手现场写代码,再现项目实现过程

    42288 人正在学习 去看看 韦东山

OpenCV之显示摄像头图像

我们使用Opencv的函数来读取显示摄像头的图像,首先要声明图像指针,读取图像,创建窗口,然后显示每一帧的图像。

使用的函数

1.cvCreateCameraCapture

函数作用:初始化从摄像头中获取视频

C++ code

CvCapture* cvCreateCameraCapture( int index );

index:要使用的摄像头索引。如果只有一个摄像机时,参数值取0。
当参数被设置为-1时,OpenCV会打开一个窗口让用户选择需要使用的摄像机。

函数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。目前在Windows下可使用两种接口:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有两种接口:V4L和FireWire(IEEE1394)。

释放这个结构,使用函数cvReleaseCapture。


2.cvQueryFrame

OpenCV中一个函数cvQueryFrame从摄像头或者文件中抓取并返回一帧

C++ code

IplImage* cvQueryFrame( CvCapture* capture );

capture 视频获取结构。

函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。 这个函数仅仅是函数cvGrabFrame和 函数cvRetrieveFrame在一起调用的组合。 返回的图像不可以被用户释放或者修改。

cvQueryFrame的参数为CvCapture结构的指针。用来将下一帧视频文件载入内存,返回一个对应当前帧的指针。与cvLoadImage不同的是cvLoadImage为图像分配内存空间,而cvQueryFrame使用已经在CvCapture结构中分配好的内存。这样的话,就没有必要通过cvReleaseImage()对这个返回的图像指针进行释放,当CvCapture结构被释放后,每一帧图像所对应的内存空间即会被释放。


3.CvCapture

视频获取结构

C++ code

typedef struct CvCapture CvCapture;

while(1)
{
     pFrame=cvQueryFrame( pCapture );
     if(!pFrame)break;
     cvShowImage("video",pFrame);
     char c=cvWaitKey(33);
     if(c==27)break;
}
结构CvCapture 没有公共接口,它只能被用来作为视频获取函数的一个参数。

这个是一个很重要的结构 以后无论是读取已有视频还是从摄像头获取都必须用到它,然后的工作就是把视屏显示出来
如果抓取帧为空 break 打破循环
否则将抓取的那一帧显示在创建的窗口上
cvShowImage(“video”,pFrame);
当前帧显示后
char c=cvWaitKey(33);
if(c==27)break;
我们等待33ms
如果用户触发了按键,将按键的ASCII值给C
如果C为ESC(ASCII 为27)循环退出
最后释放占用资源


4.实例代码

#include "stdafx.h"

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int main( int argc, char** argv )
{
  //声明IplImage指针
  IplImage* pFrame = NULL;

  //获取摄像头
  CvCapture* pCapture = cvCreateCameraCapture(-1);

  //创建窗口
  cvNamedWindow("video", 1);

  //显示摄像头图像
  while(1)
  {
      pFrame=cvQueryFrame( pCapture );
      if(!pFrame)break;
      cvShowImage("video",pFrame);
      char c=cvWaitKey(33);
      if(c==27)break;
  }
  //释放桢内存
  cvReleaseCapture(&pCapture);
  cvDestroyWindow("video");
}
没有更多推荐了,返回首页