CvRect資料結構ROI實作
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main()
{
IplImage *Image1;
IplROI ROI;
CvRect Rect1,Rect2;
Image1=cvLoadImage("coast.jpg",1);
Rect1=cvRect(287,300,14,22);
ROI=cvRectToROI(Rect1,0);
Image1->roi=
&
ROI;Rect2=cvROIToRect(*Image1->roi);
cvNamedWindow("Coast(Region Of Interesting)",1);
cvShowImage("Coast(Region Of Interesting)",Image1);
Image1->roi=NULL;
cvNamedWindow("Coast",1);
cvShowImage("Coast",Image1);
cvWaitKey(0);
}
原始圖片:
執行結果:
這張圖片則是簡單的實作擷取感興趣的區域,圖中唯一的小人被cvRect資料結構設定,傳給IplImage資料結構而被抓到了,這只是一個簡單的手動抓人物的實作.這邊ROI的製作方式有很多種,這邊只是其中一種的介紹,之後還會有ROI相關的函式應用,在這張圖片內,利用cvRect()擷取感興趣位置的座標,以及他的區塊大小,前兩個參數是座標,後兩個是寬跟高,再將cvRect資料結構用cvRectToROI()轉成IplROI格式,然後直接給IplImage資料結構內的ROI,而Rect2的實作也只是把IplROI結構轉換成CvRect的資料結構罷了,而如果把IplImage資料結構的ROI設定成NULL,那又會回到原圖影像大小了,在這邊cvRectToROI()的第二個參數是COI(Color Of Interesting)感興趣的通道顏色,而在OpenCV的cvShowImage()沒有被實作出來,而它還是在其他演算法函式上被用的到.
(1)CvRect資料結構
(2)IplROI資料結構,其實與CvRect長的很像
以下是CvBox簡單的介紹
CvBox資料結構實作
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
CvPoint2D32f Point1 =cvPoint2D32f(200,200);
CvSize2D32f Size1 = cvSize2D32f(50,50);
CvBox2D Box1;
Box1.center=Point1;
Box1.size=Size1;
Box1.angle=90;
printf("Box Point is :(%.1f,%.1f)\n",Box1.center.x,Box1.center.y);
printf("Box Size is : (%.1f,%.1f)\n",Box1.size.width,Box1.size.height);
printf("Box Angle is : %.1f\n",Box1.angle);
system("pause");
}
執行結果:
CvBox是由CvPoint2D32f資料結構跟CvSize2D32f資料結構所組成的,還有加上float型別的角度資訊,這邊只能簡單的介紹它,因為CvBox的應用很少,比較能用到的就是人臉橢圓形ROI的部份,而CvBox本身也沒有自己可以初始化資料結構的函式以及OpenCV提供的其他副程式,有在用函式為cvCamShift(),cvMinAreaRect()及cvFitEllipse().
cvRect()
初始化CvRect()資料結構,輸入的引數為X座標,Y座標,寬度大小,高度大小
cvRect(X座標數據,Y座標數據,寬度數據,高度數據)
cvRectToROI()
將CvRect轉換成IplROI格式,也可以直接跟IplImage資料結構的ROI鏈結,所需輸入的引數為,CvRect資料結構,通道數,通道數被定義為0為不選取,1為通道一,2為通道二,以此類推
cvRectToROI(CvRect資料結構,通道數據)
cvROIToRect()
將IplROI轉換成cvRect格式,也可以直接拿IplImage的ROI做轉換,需要輸入IplROI資料結構
cvROIToRect(IplROI資料結構)
2 意見:
你好!!
我想請問一個問題
好比說我把人臉的部份框起來之後
我要如針對人臉的區域如何再做下一步的處理
我不太會設定ROI的東西
可以麻煩你 給我的提示嗎??
感謝你
请问我执行时没有像你的事例那样在原图上画出红框框,不知道是怎么回事啊?
張貼留言