cvRect 和IplImage 和cvMat

本文介绍了使用OpenCV进行人脸检测的过程,包括设置矩形区域、创建子图像、显示单个人脸并绘制边界框等步骤。同时展示了如何利用CvMat和IplImage类型进行图像数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

for( i = 0; i < (faces ? faces->total : 0); i++ ) 

CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); 

cvSetImageROI(img, *r ); 
IplImage *smallface=cvCreateImage( cvSize(r->width,r->height), 8, 3 ); 
cvCopy(img,smallface); 
cvResetImageROI(img); 
cvShowImage ("SingleFace",smallface); 
pt1.x = r->x*scale; 
pt2.x = (r->x+r->width)*scale; 
pt1.y = r->y*scale; 
pt2.y = (r->y+r->height)*scale; 
cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 ); 

就五句话,憋了我一个晚上. 

这个帖子可以了结了.

luckdst
OpenCV硕士生
 
帖子: 293
注册: 2006-11-22 11:06

 

不知道一下这些对你有否帮助 

CvMat *mgntd = cvCreateMat(100, 200, CV_32SC1); 
//mgntd是一个矩阵,我希望把灰度图象中一小块的像素值弄下来,存在这个矩阵中 
cvGetSubRect( grayimage, mgntd, cvRect(50, 100, 100, 200)) ; 
//grayimage是灰度图象,之前已经load进来。这条语句执行完之后,mgntd的data指针就指向了一个灰度值数组。 

通过下面的方法可以将CvMat转成IplImage: 
IplImage *testimage1 = cvCreateImage(cvGetSize(mgntd),8,1); 
cvGetImage( mgntd, testimage1 ); 
cvSaveImage("g:/test1.bmp",testimage1);
creepingdog
OpenCV初中生
 
帖子: 22
注册: 2006-12-03 15:49
页首
由 luckdst ? 2006-12-05 13:12

楼上的大哥说的方法我实验了一下,发现也可以,也是5句话: 
CvSeq* faces = cvHaarDetectObjects( img, cascade, storage,1.1, 2, CV_HAAR_DO_CANNY_PRUNING,cvSize(40, 40) ); 
for( i = 0; i < (faces ? faces->total : 0); i++) 

CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); 
/////////////////////////////////////////////////////////////////// 
CvMat *mgntd = cvCreateMat(r->width,r->height, CV_32SC1); 
cvGetSubRect( img, mgntd, *r) ; 
IplImage *smallface = cvCreateImage(cvGetSize(mgntd),8,3); 
cvGetImage( mgntd, smallface ); 
cvShowImage ("SingleFace",smallface); 
//////////////////////////////////// 
pt1.x = r->x*scale; 
pt2.x = (r->x+r->width)*scale; 
pt1.y = r->y*scale; 
pt2.y = (r->y+r->height)*scale; 
cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 ); 

看来很完美了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值