1. 程式人生 > >影象感興趣區域ROI獲取的正確方式

影象感興趣區域ROI獲取的正確方式

簡要:獲取感興趣區域影象,能儲存得到正確的影象(cv::Mat)。

但轉換成後續所需要的介面資料型別(const void* const)之後,處理結果錯誤。

提醒大家,獲取感興趣區域影象的方式要注意!!!

做影象處理時,以自己開展的具體專案中的處理為例,得到原圖感興趣區域的cv::Rect區域之後,需要將人眼感興趣區域單獨獲取以後續處理,如進一步檢測瞳孔中心、瞳孔半徑、光斑中心等。

例如:cv::Mat SrcCalibrationImg為原影象(1280*720的人臉圖);cv::Rect EyeRoi為感興趣的矩形框;子影象為cv::Mat EyeROI

通常的做法是, cv::MatEyeROI = SrcCalibrationImg(EyeRoi);

OpenCV3程式設計入門》一書中也採用此方法。得到人眼感興趣區域,儲存下來得到的結果為:                                                                                       

                                                                                                   

圖1 人眼感興趣區域影象

由結果可以看到,確實得到並輸出了感興趣區域的cv::Mat影象。

1、遇見問題

在使用後續處理瞳孔與光斑的統一介面中,需要將

cv::Mat的影象轉成const void * const型別。

const void*const pImgEye = static_cast<void*>(EyeROI.data);

// uchar*轉成const void* const

但是後續的處理結果不對,輸出錯誤的瞳孔光斑中心等資料!!!

2、發現問題

排查眾多原因,最終確認是因為輸入的感興趣區域影象不對。可是,人眼區域儲存的圖片輸出是對的,究竟是怎麼回事呢?

進一步證實:將const void * const再次轉回cv::Mat轉化之後,得到的影象如下:

                                                                                            

圖2 cv::Mat轉const void * const再轉cv::Mat

得到錯誤的人眼感興趣區域影象

3、解決問題

修改方法之後,cv::Matconst void * const再轉cv::Mat,也能獲得正確的人眼區域影象。後續處理的結果也正確輸出。

方法為:

cv::Mat EyeROI;

SrcCalibrationImg(EyeRoi).copyTo(EyeROI);

//原來的方法:cv::Mat EyeROI =SrcCalibrationImg(EyeRoi);

                                                                                              

圖3 cv::Mat轉const void * const再轉cv::Mat

得到正確的人眼感興趣區域影象

4、結論

cv::MatEyeROI = SrcCalibrationImg(EyeRoi);的方式獲取感情區域,EyeROI資料被破壞,見圖2.data資料對比。雖然現在也不知道為什麼也能儲存為正確實的感興趣區域圖片,建議大家還是儘量不用這種方式。

②推薦獲取感興趣區域方式:

cv::Mat EyeROI;

SrcCalibrationImg(EyeRoi).copyTo(EyeROI);能更多的滿足介面的需要。

相關推薦

影象興趣區域ROI獲取正確方式

簡要:獲取感興趣區域影象,能儲存得到正確的影象(cv::Mat)。 但轉換成後續所需要的介面資料型別(const void* const)之後,處理結果錯誤。 提醒大家,獲取感興趣區域影象的方式要注意!!! 做影象處理時,以自己開展的具體專案中的處理為例,得到原圖感興趣區域的cv::Rect區域之後,需要

設定影象興趣區域(ROI)

新函式用紅色顯示,程式為:#include <highgui.h>#include <cv.h>#include <iostream.h>void main(){IplImage * src=cvLoadImage("baboon.jpg"

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

今天終於將霍夫檢測的原始碼用C++寫出來了,八天時間遇到最多的問題還是資料結構不熟悉,有些問題不知道怎麼問,不知道從何下手 寫出來的檢測直線基本符合要求,問題是如果在現實中檢測鐵軌的話,附近會有石子,

【opencv入門之二】興趣區域ROI,線性混合addWeighted

bsp enc 擁有 ted 興趣 通道數 amp log 兩個 參考網站: http://blog.csdn.net/poem_qianmo/article/details/20911629 1、感興趣區域ROI   //【2】定義一個Mat類型並給其設定ROI區

OpenCV:興趣區域ROI相關函式操作

1. 之前版本函式 void cvSetImageROI(IplImage* image, CvRect rect)//設定ROI區域,只顯示ROI區域 void cvResetImageROI(IplImage* image);//復位ROI區域,重置,釋放ROI區域 CvRect c

《OpenCV3程式設計入門》——5.2.1 興趣區域ROI

定義ROI區域有兩種方法: 第一種:使用表示矩形區域的Rect。指定矩形的左上角座標(建構函式的前兩個引數)和矩形的長寬(建構函式的後兩個引數)。 imageROI = image(Rect(500, 250, logo.cols, logo.rows)); 第二種:指定感興

Python 影象處理 OpenCV (3):影象屬性、影象興趣 ROI 區域及通道處理

![](https://cdn.geekdigging.com/opencv/opencv_header.png) 前文傳送門: [「Python 影象處理 OpenCV (1):入門」](https://www.geekdigging.com/2020/05/17/5513454552/) [「Pyt

OpenCV入門:ROI興趣區域(滑鼠事件選定區域

OpenCV入門:ROI感興趣區域(滑鼠事件選定區域) 部落格 http://blog.csdn.net/qq_23968185/article/details/51335291 #include <iostream> #include "opencv2/core/core.h

OpenCV入門:ROI興趣區域(已知ROI區域範圍)

ROI感興趣區域 最簡單的ROI使用(已知ROI的區域範圍) #include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>

裁剪影象興趣區域python

目的是接上篇生成的高斯分佈,3*delta範圍內包含99+%的資訊,那麼3*delta外的區域置零,只保留半徑為3*delta的區域。 import numpy as np import matplotlib.pyplot as plt #im

關於興趣區域和掩膜的問題!

本文章主要對感興趣區域ROI的操作(對於ROI區域影象疊加)說明 在影象處理的領域,我們常常需要去設定自己感興趣的區域(ROI,region of interest),來專注或者簡化工作過程。也就是從影象中選擇的一個影象區域,這個

opencv中興趣區域以及mask的使用

在影象處理的過程中,我們時常需要對指定區域或目標進行操作,這個區域我們稱之為感興趣區域。在學習opencv的初級階段,對於感興趣區域的操作方法是必須要掌握的。 Mat image,mask;   Rect r1(100,100,50,100);   Mat img1,img

Opencv興趣區域複製,畫點,畫線方法總結

今天做的東西用到了Opencv的幾個功能,下面對他們依次進行總結。 (1)Opencv對感興趣區域的複製 具體是這樣的,我想把兩張影象進行拼接成一幅影象,很容易想象到的方法就是先建立一幅大的影象(高度為兩張原圖高度的較大者,寬度為兩張原圖寬度之和),然後把兩張影象內容分別複

如何設定興趣區域ROI

一、定義:ROI區域有兩種演算法,第一種是表示矩形區域的Rect區域,它指定矩形的左上角座標和矩形的長和寬;另一個函式是Range,它是從起始索引到終止索引(不包括終止索引)的一段連續區域,我感覺就是矩形行數的範圍和獵術範圍疊加起來而形成的一個矩陣,從而定義一個矩形區域。

iOS 快速獲取當前顯示控制器的正確方式

背景 在開發過程中,經常需要獲取當前 window, rootViewController, 以及當前 ViewController 的需求. 如果 .m 實現不是在當前檢視情況下, 我們需要快速的獲取到當前控制器, 這種情況就需要先做好一層封裝,我一般是通過

文字包含圖片路徑 及roi興趣 提取 對圖片分類

//文件類似於上述圖片截圖  第一行為圖片路徑 ,接下來四個為感興趣區域的左上角和右下角座標 ,然後是影象類別。接下來四個又是座標,然後又是類別 #include "stdafx.h" #include <stdio.h> #include <string.h&

OpenCV計算機視覺學習(1)——影象基本操作(影象視訊讀取,ROI區域擷取,常用cv函式解釋)

1,計算機眼中的影象   我們開啟經典的 Lena圖片,看看計算機是如何看待圖片的:    我們點選圖中的一個小格子,發現計算機會將其分為R,G,B三種通道。每個通道分別由一堆0~256之間的數字組成,那OpenCV如何讀取,處理圖片呢,我們下面詳細學習。 2,影象的載入,顯示和儲存   我們看

從WAVE頭文件裏獲取壓縮方式

layer aligned tel 列表 rim true spc content creat 在解析WAV文件時。會從頭文件裏讀取TAG值,表示當前文件的壓縮格式,如該值為1,表示沒有壓縮,其他表示不同的壓縮方式。如當中為6時,表示壓縮方式是alaw 列表例如以下:

Android玩轉百度地圖Sha1獲取正確姿勢?

views num adl 定位 提示 合作 動態 例如 登錄 場景一 由於近期項目鐘要用到定位功能因此肯定須要用到地圖以及地位功能,相信大家也知道眼下國內比較出名的地圖像百度、高德、騰訊等這些還是用到比較多的。於是思考了一下決定還是用百

kali安裝中文輸入法的正確方式

中文輸入法 googl 我們 sun gtk3 kali 任務欄 輸入法 任務 感覺每次裝搜狗輸入法的話有點不好玩,直接用kali自帶的就行 更新好自己源之後 安裝ibus框架 apt-get install ibus ibus-clutter ibus-gtk ibus