1. 程式人生 > >OpenCV設定感興趣區域ROI,對影象進行區域性處理

OpenCV設定感興趣區域ROI,對影象進行區域性處理

今天終於將霍夫檢測的原始碼用C++寫出來了,八天時間遇到最多的問題還是資料結構不熟悉,有些問題不知道怎麼問,不知道從何下手

寫出來的檢測直線基本符合要求,問題是如果在現實中檢測鐵軌的話,附近會有石子,測試中發現如果石子的數目少,則檢測效果較好,如果石子多,那麼石子構成的點將影響檢測

現在想到的一種方法就是設定感興趣區域,將石子的影響減少

原始碼如下:

1、Iplimage設定感興趣區域

int main( int argc, char** argv )
{
 IplImage *img = cvLoadImage("123.jpg", 1);/*-1:原,0:灰,1:讀彩圖*/
 cvSetImageROI(img, cvRect(10
, 15, 150, 250));//設定感興趣區域
 IplImage *img2 = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);//建立一個新的用來顯示區域性
cvCopy(img, img2, NULL);
 //重置,如果不重置,則img只會顯示感興趣的矩形一部分
cvResetImageROI(img);
cvNamedWindow("img");
cvNamedWindow("img2");
cvShowImage("img",img);
cvShowImage("img2",img2);
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(
&img); cvReleaseImage(&img2); }

2、Mat設定感興趣區域

int main( )
{
    //匯入影象
    Mat img = imread("123.jpg", 1);
    Mat img2(img.rows,img.cols,CV_8UC3);

    //設定感興趣區域,拷貝
img(Rect(10, 15, 150, 250)).copyTo(img2);

//顯示
imshow("img",img);
imshow("img2",img2);
waitKey(0);
}