1. 程式人生 > >SetImageROI函式設定ROI區域的作用及用法

SetImageROI函式設定ROI區域的作用及用法

原文:http://blog.csdn.net/futurewu/article/details/9836169

雖然先前知道ROI區域是感興趣區域,但是真正看到呼叫了OpenCV的cvSetImageROI函式時,並不知道它的作用,所以還是單獨寫了一段程式碼對這個函式進行探究。

OpenCVchm文件中對cvSetImageROI函式的介紹如下:

void cvSetImageROI( IplImage* image, CvRect rect );
image 
影象. 
rect 
ROI 矩形. 
函式 cvSetImageROI 基於給定的矩形設定影象的 ROI(感興趣區域) . 如果ROI是NULL 並且引數RECT的值不等於整個影象, ROI被分配. 不像 COI, 大多數的 OpenCV 函式支援 ROI 並且處理它就像它是一個分離的影象 (例如, 所有的畫素座標從ROI的左上角或左下角(基於影象的結構)計算。 

測試程式碼:

  1. #include<cv.h>
  2. #include<cxcore.h>
  3. #include<highgui.h>
  4. void main()  
  5. {  
  6.     IplImage *res,*dst;  
  7.     CvRect rect;  
  8.     rect.x=130,rect.y=30,rect.width=200,rect.height=200;  
  9.     res=cvLoadImage("C:/Users/lufee/Pictures/cat.jpg");//載入一張圖片
  10.     dst=cvCreateImage(cvSize(200,200),8,3);//建立影象空間
  11.     //建立視窗
  12.     cvNamedWindow("res",CV_WINDOW_AUTOSIZE);  
  13.     cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);  
  14.     //設定ROI區域
  15.     cvSetImageROI(res,rect);  
  16.     //提取ROI
  17.     cvCopy(res,dst);  
  18.     //取消設定
  19.     cvResetImageROI(res);  
  20.     //顯示影象
  21.     cvShowImage("res",res);  
  22.     cvShowImage("dst",dst);  
  23.     cvWaitKey(0);  
  24.     cvDestroyWindow("res");  
  25.     cvDestroyWindow("dst");  
  26.     cvReleaseImage(&res);  
  27.     cvReleaseImage(&dst);  
  28. }  
執行結果(res為原圖,dst為提取的ROI區域):


個人總結:

   在對某IplImage影象用cvSetImageROI函式設定了ROI後,對影象的處理都將僅限於ROI區域,相當於該影象變為了ROI中的影象,測試程式碼值僅用cvCopy(複製影象的函式),進行了測試,實際上對於任何處理影象IplImage型別的函式,處理設定了ROI區域的影象類物件,都是處理它的ROI區域


相關推薦

SetImageROI函式設定ROI區域作用用法

原文:http://blog.csdn.net/futurewu/article/details/9836169 雖然先前知道ROI區域是感興趣區域,但是真正看到呼叫了OpenCV的cvSetImageROI函式時,並不知道它的作用,所以還是單獨寫了一段程式碼對這個函式

靜態成員函式和static的作用用法

類裡面的靜態成員函式相當於類裡面的全域性函式,它能訪問類裡面的私有建構函式、解構函式、普通函式以及成員變數,靜態成員只能通過靜態成員函式進行訪問。 靜態私有成員在類外不能被訪問,可通過類的靜態成員函式來訪問; 當類的建構函式是私有的時,不像普通類那樣例項化自己,只能通過靜態

SQL over的作用用法

tool odi number 出現 column del dense 最大的 copy sql over的作用及用法 RANK ( ) OVER ( [query_partition_clause] order_by_clause ) DENSE_RANK ( )

MySQL存儲過程 DELIMITER的作用用法

gin cts mysql存儲過程 怎麽 mysql存儲 procedure 繼續 定義 執行過程 存儲過程是一個代碼段,在mysql執行過程中,遇到分號就執行了,怎麽去改掉分號呢,讓代碼繼續執行呢,下面講講MySQL存儲過程 DELIMITER的作用及用法。 1,MyS

namespace的作用用法

所有 編譯 names 關鍵字 運行 exp div 能夠 例如 namespace   所謂namespace,是指標識符的可見範圍。C++標準庫中的所有標識符都被定義在一個名為 std 的namespace 中。 一、<iostream>和<iost

java中 this() 和super()的作用用法

原文地址:http://www.cnblogs.com/hasse/p/5023392.html 一、This   Java關鍵字this只能用於方法體中。this只能在類中的非靜態方法中使用,靜態方法和靜態的程式碼塊中絕對不能出現this,並且this只和特定的物件關聯,而不和類關聯,同一個類的不同物件

PHP中的常見魔術方法功能作用用法實例

obj 寫入文件 對象的引用 for 表現 最終 get() 動態 method 概述 在面向對象編程中,PHP提供了一系列的魔術方法,這些魔術方法為編程提供了很多便利。PHP中的魔術方法通常以__(兩個下劃線)開始,並且不需要顯示的調用而是由某種特定的條件出發。這篇文章簡

mvc 當中 [ValidateAntiForgeryToken] 的作用用法

一.CSRF是什麼?   CSRF(Cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:CSRF/XSRF。 二.CSRF可以做什麼?   你這可以這麼理解CSRF攻擊:攻擊者盜

phothoshop 羽化作用用法

網站資訊 文章數:581 篇 評論數:2006 條 標籤數:1184 個 頁面數:7 個 友鏈數:20 條 使用者數:13092 位 共執行:2562 天 建站日期:2011.11.17 最近更新:2018.11.17 註冊登入 據說本站已備案,不管你信不信,反正我信了. ^_^

java中關鍵字 this 和super的作用用法

this關鍵字1)在類的內部代表物件本身,你應該看到過this.xxx(),this.xxx這種用法吧,this就代表這個類的物件,比如public class A { private String name; public void setName(String name)

PHP中的常見魔術方法功能作用用法例項

概述 在面向物件程式設計中,PHP提供了一系列的魔術方法,這些魔術方法為程式設計提供了很多便利。PHP中的魔術方法通常以__(兩個下劃線)開始,並且不需要顯示的呼叫而是由某種特定的條件出發。這篇文章簡單總結了PHP中提供的魔術方法。 開始之前 在總結PHP的魔術方法

Oracle的Package的作用用法

簡化應用設計、提高應用效能、實現資訊隱藏、子程式過載。 1、Oracle的Package除 了把儲存過程放到一堆兒以外還有沒有其他的作用(好處)? 你不覺得把儲存過程分門別類是很重要的麼,而且不同的package的儲存過程可以重 名。 用package不僅能把儲存過程分門別類,而且在package裡可以定義公

Java 物件比較器 comparator 的作用用法

排序的演算法是我們最常用的演算法,初學程式,每個人都嘗試過排序。但只是侷限於簡單的排序。 如將下列數字進行排序 1,3,5,8,3,6 於是我們得出結果 1,3,3,5,6,8 將下列字母(字元)進行排序 a,i,e,f,w,s 於是我們得出結果 a,e,f,i,s,w 但

HTML中作用用法詳解

一、什麼是DTD       DTD(document type definition),文件型別定義。可定義合法的XML文件構建模組,它使用一系列合法的元素來定義文件的結構。通過DTD,每一個xml檔案均可攜帶一個有關其自身格式的描述。 內部的DOCTYPE宣告

PACKAGE-INFO.JAVA 作用用法詳解

package-info.java對於經常使用外部包的程式設計師來說應該是熟悉陌生人。因為不是專門開發包的程式設計師很少需要關注它,而又常在其他包中看到他,眼很熟。它到底有哪些特性和作用及如何使用呢?程式設計師講究動口不如動手,何不建立一個試試。開啟Eclipse,new class,哦!建立失敗,‘-’

php curl的作用用法

curl 模擬瀏覽器請求,比如獲取遠端瀏覽器內容,雖然可以用file_get-contents來代替,但curl還支援瀏覽器型別,cookie和來源ip等,功能相比強大 常用相關函式 curl_init()   初始化curl會話 curl_setopt() 設定curl傳

Scala 的那些奇怪的符號 (一):“:” 作用用法

    Scala的語法很多,有些人認為過於繁瑣,有些人卻認為正是因為繁瑣,所以才讓這門語言嚴謹和強大。    例如在翻閱Scala資料或者檢視Scala原始碼的時候,經常會看到“<:”和“>:”,這是什麼鬼?下面我就來探討一下這兩個符號的用法: “<:

@XmlRootElement作用用法

package com.yanek.test; import java.util.ArrayList; import java.util.List; import com.yanek.test.JaxbUtil.CollectionWrapper; publ

sql語句關鍵字over的作用用法

在應用具體的聚合函式、排名函式前對行集的分割槽和排序。over子句,用於支援視窗的計算,所以一般與排名開窗函式、聚合開窗函式一起使用。   視窗是使用者指定的一組行。開窗函式計算從視窗派生的結果集中各行的值。 以前使用聚合函式必須分組,即便沒有group by 子句,也是預

閉包函式的特性和作用應用場合

<?php/*1.匿名函式也叫閉包函式,顧名思義就是沒有名字的函式;   2.因為沒有名字,所以匿名函式不能直接呼叫,需要先將匿名函式賦值給一個變數,然後由變數函式的形式來呼叫;   3.匿名函