导航:首页 > 机械设备 > opencv机械手抓取

opencv机械手抓取

发布时间:2021-09-07 09:50:23

⑴ 求助贴.如何用Opencv实现物体的识别与抓取

背景提取可以用GMM(高斯混合模型)+形态学处理,虽然时间复杂度比较大但是效果很好。但我之前写的代码都是Matlab的,opencv不熟悉,不过在stack overflow之类的网站上搜一下应该不难找到opencv版代码。

⑵ opencv抓取摄像头图像 二值化

把pBkImg中这个IPL_DEPTH_32F换成跟你原图像一致的IPL_DEPTH_8U,再试试看。CV_Assert( src.depth() == dst.depth() );

⑶ 【手势识别】opencv通过摄像头获取实时数据后怎么弄

你只管处理读到的图像就行

⑷ opencv实现摄像头时时抓捕人脸只能抓一帧怎么回事

网上代码:
#include <opencv\highgui.h>//包含opencv库头文件
#include <opencv\cv.h>
//#include<iostream>
//using namespace std;
using namespace cv;
int main( int argc, char** argv ) {//主函数

cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );//创建窗口,(名字,默认大小)
CvCapture *capture = NULL;// 视频获取结构,用来作为视频获取函数的一个参数

capture = cvCreateCameraCapture(0);//打开摄像头,从摄像头中获取视频
IplImage* frame;//申请IplImage类型指针,就是申请内存空间来存放每一帧图像
while(1) {
frame = cvQueryFrame( capture );// 从摄像头中抓取并返回每一帧
if( !frame ) break;//如果抓取帧为空 break 打破循环否则将抓取的那一帧显示在创建的窗口上
cvShowImage( "Example2", frame );//在窗口上显示每一帧
char c = cvWaitKey(33);//延时,每秒钟约33帧;符合人眼观看速度;
if( c == 27 ) break;//由于是死循环,而且没有控制台,当按下键盘esc键,将按键的ASCII值给C,如果C为ESC(ASCII 为27)循环退出退出循环;
}
cvReleaseCapture( &capture );//释放内存;
cvDestroyWindow( "Example2" );//销毁窗口
return 0;
}

第一次运行还能启动下笔记本的摄像头(摄像头灯是亮的),但是frame上一片黑
第二次运行开始就老是出现这种界面,求助,用的是opencv-3.0.0 win7 63位

⑸ 如何用OpenCV实现从黑到白抓取一个边缘

求取黑白过度处的梯度。
梯度大的地方基本上就可以将其定义为边缘。

⑹ 最简单的opencv提取摄像头视频 获取摄像头cvCreateCameraCapture(-1)就失败了

cvCreateCameraCapture 初始化从摄像头中获取视频
CvCapture* cvCreateCameraCapture( int index );
index 要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。
函数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。

若想显示摄像头中采集的内容还需采用:
cvQueryFrame
从摄像头或者文件中抓取并返回一帧
IplImage* cvQueryFrame( CvCapture* capture );

还要调用图像显示(从摄像头抓取的帧为iplimage类型)
cvShowImage
在指定窗口中显示图像
void cvShowImage( const char* name, const CvArr* image );

name窗口的名字。 image被显示的图像。
函数cvShowImage 在指定窗口中显示图像。如果窗口创建的时候被设定标志CV_WINDOW_AUTOSIZE,那么图像将以原始尺寸显示;否则,图像将被伸缩以适合窗口大小。

不知道能不能帮到你

⑺ 请问谁能提供opencv实现的视频中运动行人检测与追踪的程序

记得给我分,急需

#include "cv.h"
#include <cxcore.h>
#include "highgui.h"
#include <time.h>
#include <math.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
// various tracking parameters (in seconds)
const double MHI_DURATION = 0.5;
const double MAX_TIME_DELTA = 0.5;
const double MIN_TIME_DELTA = 0.05;
const int N = 3;
//
const int CONTOUR_MAX_AERA = 16;
// ring image buffer
IplImage **buf = 0;
int last = 0;
// temporary images
IplImage *mhi = 0;
// MHI: motion history image
int filter = CV_GAUSSIAN_5x5;
CvConnectedComp *cur_comp, min_comp;
CvConnectedComp comp;
CvMemStorage *storage; CvPoint pt[4];
// 参数:
// img – 输入视频帧
// dst – 检测结果
void update_mhi( IplImage* img, IplImage* dst, int diff_threshold )
{
double timestamp = clock()/100.;
// get current time in seconds
CvSize size = cvSize(img->width,img->height);
// get current frame size
int i, j, idx1, idx2;
IplImage* silh;
uchar val;
float temp;
IplImage* pyr = cvCreateImage( cvSize((size.width & -2)/2, (size.height & -2)/2), 8, 1 );
CvMemStorage *stor;
CvSeq *cont, *result, *squares;
CvSeqReader reader;
if( !mhi || mhi->width != size.width || mhi->height != size.height )
{
if( buf == 0 )
{
buf = (IplImage**)malloc(N*sizeof(buf[0]));
memset( buf, 0, N*sizeof(buf[0]));
}
for( i = 0; i < N; i++ )
{
cvReleaseImage( &buf[i] );
buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 );
cvZero( buf[i] );
}
cvReleaseImage( &mhi );
mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 );
cvZero( mhi );
// clear MHI at the beginning
}
// end of if(mhi)
cvCvtColor( img, buf[last], CV_BGR2GRAY );
// convert frame to grayscale
idx1 = last;
idx2 = (last + 1) % N;
// index of (last - (N-1))th frame
last = idx2;
// 做帧差
silh = buf[idx2];
cvAbsDiff( buf[idx1], buf[idx2], silh );
// get difference between frames
// 对差图像做二值化
cvThreshold( silh, silh, 30, 255, CV_THRESH_BINARY );
// and threshold it
cvUpdateMotionHistory( silh, mhi, timestamp, MHI_DURATION );
// update MHI
cvCvtScale( mhi, dst, 255./MHI_DURATION,
(MHI_DURATION - timestamp)*255./MHI_DURATION );
cvCvtScale( mhi, dst, 255./MHI_DURATION, 0 );
// 中值滤波,消除小的噪声
cvSmooth( dst, dst, CV_MEDIAN, 3, 0, 0, 0 );
// 向下采样,去掉噪声
cvPyrDown( dst, pyr, 7 );
cvDilate( pyr, pyr, 0, 1 );
// 做膨胀操作,消除目标的不连续空洞
cvPyrUp( pyr, dst, 7 );
//
// 下面的程序段用来找到轮廓
//
// Create dynamic structure and sequence.
stor = cvCreateMemStorage(0);
cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor);
// 找到所有轮廓
cvFindContours( dst, stor, &cont, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
// 直接使用CONTOUR中的矩形来画轮廓
for(;cont;cont = cont->h_next)
{
CvRect r = ((CvContour*)cont)->rect;
if(r.height * r.width > CONTOUR_MAX_AERA) // 面积小的方形抛弃掉
{
cvRectangle( img, cvPoint(r.x,r.y),
cvPoint(r.x + r.width, r.y + r.height),
CV_RGB(255,0,0), 1, CV_AA,0);
}
} // free memory
cvReleaseMemStorage(&stor);
cvReleaseImage( &pyr );
}
int main(int argc, char** argv)
{
IplImage* motion = 0;
CvCapture* capture = 0; //视频获取结构
if( argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))
//原型:extern int isdigit(char c); //用法:#include <ctype.h> 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零。
capture = cvCaptureFromCAM( argc == 2 ? argv[1][0] - '0' : 1 );
else if( argc == 2 )
capture = cvCaptureFromAVI( argv[1] );
if( capture )
{
cvNamedWindow( "Motion", 1 );
for(;;)
{
IplImage* image;
if( !cvGrabFrame( capture )) //从摄像头或者视频文件中抓取帧
break;
image = cvRetrieveFrame( capture );
//取回由函数cvGrabFrame抓取的图像,返回由函数cvGrabFrame 抓取的图像的指针
if( image )
{
if( !motion )
{
motion = cvCreateImage( cvSize(image->width,image->height), 8, 1 );
cvZero( motion );
motion->origin = image->origin;
///* 0 - 顶—左结构, 1 - 底—左结构 (Windows bitmaps 风格) */
}
}
update_mhi( image, motion, 60 );
cvShowImage( "Motion", image );
if( cvWaitKey(10) >= 0 )
break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "Motion" );
}
return 0;
}

⑻ opencv中如何将从视频中抓取的帧释放掉

Mat frame;
frame.release();

⑼ opencv 如何能把从摄像头中抓取的两帐图片进行精确比较

你直接用帧差法看看就知道了
这种方法不靠谱的,一个是摄像机的白平衡,一个是移动目标对光场的扰动

⑽ opencv中从视频里抓取一帧并把前景目标扣取出来,这个怎么实现

你说的前景提取,具体是什么样的呢,背景固定的好提取,背景不固定的难,最简单的方法是用高斯混合模版,opencv里好像有这个函数gmm

阅读全文

与opencv机械手抓取相关的资料

热点内容
黑龙江特种设备检验研究院 浏览:210
机械化养护中心 浏览:838
上海特种设备管理 浏览:48
机械师改枪 浏览:181
机械化剪纸 浏览:757
美燃环保设备 浏览:809
济南北斗星数控设备有限公司 浏览:838
自动喷涂机械手 浏览:457
中小型农业机械加工项目建议书 浏览:251
不锈钢加工设备市转让 浏览:441
水稻生产全程机械化 浏览:110
扳手机械原理 浏览:61
凯格精密机械有限公司 浏览:61
广毅机电设备 浏览:805
重庆三阳办公设备有限公司 浏览:494
华技达自动化设备 浏览:631
东莞石碣自动化设备厂 浏览:131
机械制图陈列柜 浏览:246
郑州奥鑫游乐设备公司 浏览:733
美邦环保设备有限公司 浏览:386