最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)圖像目標(biāo)區(qū)裁剪ImageCropping

 更新時(shí)間:2022年06月10日 11:25:53   作者:翟天保Steven  
本文主要介紹了C++實(shí)現(xiàn)圖像目標(biāo)區(qū)裁剪ImageCropping,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

場(chǎng)景需求

在做圖像處理時(shí),有時(shí)候會(huì)需要適當(dāng)?shù)剡M(jìn)行一些裁剪工作,比如我做干涉測(cè)量領(lǐng)域,我們所要處理的圖像區(qū)域是條紋所在區(qū)域,而原圖又遠(yuǎn)大于我所想分析的目標(biāo)區(qū),此時(shí)就需要對(duì)圖像進(jìn)行裁剪,這樣做的好處:

1)縮減計(jì)算量,提高程序運(yùn)行速度;

2)裁剪后的圖像尺寸正好是歸一化的圖像尺寸,如果有歸一化的需求,可以直接用裁剪圖像尺寸建立歸一化數(shù)據(jù)網(wǎng)格圖。

我就是為了計(jì)算柱面的擬合系數(shù)才寫(xiě)了這個(gè)函數(shù),若要得到同光學(xué)領(lǐng)域標(biāo)準(zhǔn)一致的系數(shù),需要先歸一化數(shù)據(jù),而歸一化的范圍就正好是裁剪的圖像大小。

函數(shù)通俗易懂,就是用掩膜鎖定目標(biāo)區(qū),再分析掩膜在原圖中的上下左右邊界,用roi提取出來(lái)即可。

話(huà)不多說(shuō),下方為具體實(shí)現(xiàn)函數(shù)和測(cè)試代碼。

功能函數(shù)代碼

/**
 * @brief ImageCropping                    圖像裁剪
 * @param phase                            所需裁剪的圖像
 * @return                                 裁剪后圖像
 */
cv::Mat ImageCropping(const cv::Mat &phase) {
	// 非測(cè)量區(qū)一般都進(jìn)行了NaN處理,所以掩膜繪制只需要判斷是否為NaN值即可
	cv::Mat mask = cv::Mat::zeros(phase.size(), CV_8UC1);
	mask.setTo(255, phase == phase);
	int roi_up = 10000;
	int roi_down = 0;
	int roi_left = 10000;
	int roi_right = 0;
	int row = phase.rows;
	int col = phase.cols;
	for (int i = 0; i < row; i++)
	{
		uchar *m = mask.ptr<uchar>(i);
		for (int j = 0; j < col; j++)
		{
			if (m[j] != 0)
			{
				if (j < roi_left)roi_left = j;
				if (j > roi_right)roi_right = j;
				if (i < roi_up)roi_up = i;
				if (i > roi_down)roi_down = i;
			}
		}
	}
	int w = roi_right - roi_left;
	int h = roi_down - roi_up;
	// 一般提取奇數(shù)尺寸,方便計(jì)算
	if (w % 2 == 0)w++;
	if (h % 2 == 0)h++;
	cv::Mat crop_phase = phase(cv::Rect(roi_left, roi_up, w, h)).clone();
	return crop_phase;
}

C++測(cè)試代碼

#include<iostream>
#include<opencv2/opencv.hpp>
#include<ctime>
using namespace std;
using namespace cv;
cv::Mat ImageCropping(const cv::Mat &phase);
int main(void)
{
	cv::Mat phase(100, 100, CV_32FC1, nan(""));
	cv::circle(phase, cv::Point(50, 50), 30, 255, -1);
	cv::Mat crop = ImageCropping(phase);
	imshow("original", phase);
	imshow("result", crop);
	waitKey(0);
	system("pause");
	return 0;
}
/**
 * @brief ImageCropping                    圖像裁剪
 * @param phase                            所需裁剪的圖像
 * @return                                 裁剪后圖像
 */
cv::Mat ImageCropping(const cv::Mat &phase) {
	// 非測(cè)量區(qū)一般都進(jìn)行了NaN處理,所以掩膜繪制只需要判斷是否為NaN值即可
	cv::Mat mask = cv::Mat::zeros(phase.size(), CV_8UC1);
	mask.setTo(255, phase == phase);
	int roi_up = 10000;
	int roi_down = 0;
	int roi_left = 10000;
	int roi_right = 0;
	int row = phase.rows;
	int col = phase.cols;
	for (int i = 0; i < row; i++)
	{
		uchar *m = mask.ptr<uchar>(i);
		for (int j = 0; j < col; j++)
		{
			if (m[j] != 0)
			{
				if (j < roi_left)roi_left = j;
				if (j > roi_right)roi_right = j;
				if (i < roi_up)roi_up = i;
				if (i > roi_down)roi_down = i;
			}
		}
	}
	int w = roi_right - roi_left;
	int h = roi_down - roi_up;
	// 一般提取奇數(shù)尺寸,方便計(jì)算
	if (w % 2 == 0)w++;
	if (h % 2 == 0)h++;
	cv::Mat crop_phase = phase(cv::Rect(roi_left, roi_up, w, h)).clone();
	return crop_phase;
}

測(cè)試效果     

圖1 裁剪前后對(duì)比圖

在測(cè)試案例中,隨機(jī)生成了一個(gè)100*100的數(shù)據(jù)矩陣,中間一個(gè)30半徑的圓,也是我需要的目標(biāo)區(qū)域,運(yùn)用ImageCropping函數(shù)實(shí)現(xiàn)了目標(biāo)區(qū)域的提取。

到此這篇關(guān)于C++實(shí)現(xiàn)圖像目標(biāo)區(qū)裁剪ImageCropping的文章就介紹到這了,更多相關(guān)C++目標(biāo)裁剪ImageCropping內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Matlab制作一個(gè)賊簡(jiǎn)單的粒子圣誕樹(shù)

    利用Matlab制作一個(gè)賊簡(jiǎn)單的粒子圣誕樹(shù)

    圣誕節(jié)快到了,本文用Matlab繪制了圣誕樹(shù)祝你們圣誕節(jié)快樂(lè),所以下面這篇文章主要給大家介紹了關(guān)于如何利用Matlab制作一個(gè)賊簡(jiǎn)單的粒子圣誕樹(shù),需要的朋友可以參考下
    2022-12-12
  • 常用的C語(yǔ)言編程工具匯總

    常用的C語(yǔ)言編程工具匯總

    c語(yǔ)言編程軟件適于編寫(xiě)系統(tǒng)軟件,是學(xué)習(xí)編程的同學(xué)們的必備軟件。c語(yǔ)言一種非常強(qiáng)大的計(jì)算機(jī)語(yǔ)言,應(yīng)用非常廣泛,不僅僅是在軟件開(kāi)發(fā)上,而且各類(lèi)科研都會(huì)用到c語(yǔ)言。今天小編給大家匯總下C語(yǔ)言的編程工具
    2018-01-01
  • C++實(shí)現(xiàn)計(jì)算器功能

    C++實(shí)現(xiàn)計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C++實(shí)現(xiàn)線(xiàn)程池的簡(jiǎn)單方法示例

    C++實(shí)現(xiàn)線(xiàn)程池的簡(jiǎn)單方法示例

    這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)線(xiàn)程池的簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Cocos2d-x UI開(kāi)發(fā)之菜單類(lèi)使用實(shí)例

    Cocos2d-x UI開(kāi)發(fā)之菜單類(lèi)使用實(shí)例

    這篇文章主要介紹了Cocos2d-x UI開(kāi)發(fā)之菜單類(lèi)使用實(shí)例,本文的代碼中含有詳細(xì)注釋,需要的朋友可以參考下
    2014-09-09
  • 你真的懂C++中的namespace用法

    你真的懂C++中的namespace用法

    命名空間(namespace)為防止名字沖突提供了更加可控的機(jī)制,命名空間分割了全局命名空間,其中每個(gè)命名空間是一個(gè)作用域,今天通過(guò)本文給大家分享C++中namespace用法,感興趣的朋友一起看看吧
    2021-06-06
  • C++構(gòu)造函數(shù)的初始化列表詳解

    C++構(gòu)造函數(shù)的初始化列表詳解

    這篇文章主要為大家介紹了C++構(gòu)造函數(shù)的初始化列表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • C++實(shí)現(xiàn)無(wú)重復(fù)字符的最長(zhǎng)子串

    C++實(shí)現(xiàn)無(wú)重復(fù)字符的最長(zhǎng)子串

    本文主要介紹了C++實(shí)現(xiàn)無(wú)重復(fù)字符的最長(zhǎng)子串,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 關(guān)于C++地址交換的實(shí)現(xiàn)

    關(guān)于C++地址交換的實(shí)現(xiàn)

    在C++中,地址交換通常是指通過(guò)指針操作改變兩個(gè)變量之間的內(nèi)存地址引用,當(dāng)你有兩個(gè)指針?lè)謩e指向兩個(gè)變量時(shí),你可以通過(guò)某種機(jī)制交換這兩個(gè)指針的內(nèi)容,使得它們各自指向?qū)Ψ皆瓉?lái)的位置,本介紹了關(guān)于C++地址交換的實(shí)現(xiàn),需要的朋友可以參考下
    2024-11-11
  • C++模板超詳細(xì)介紹

    C++模板超詳細(xì)介紹

    C++語(yǔ)言的模板技術(shù)包括函數(shù)模板和類(lèi)模板,模板技術(shù)是一種代碼重用技術(shù),函數(shù)和類(lèi)是C++語(yǔ)言中兩種主要的重用代碼形式,這篇文章主要介紹了C++函數(shù)模板和類(lèi)模板,需要的朋友可以參考下
    2022-09-09

最新評(píng)論

花莲市| 鄂温| 遵化市| 汾西县| 青铜峡市| 延长县| 铁岭市| 德安县| 日喀则市| 通河县| 济宁市| 壶关县| 招远市| 平舆县| 绥阳县| 芒康县| 哈密市| 韶山市| 慈利县| 阳山县| 昭平县| 贺州市| 凤城市| 宁国市| 庄浪县| 宜君县| 凤冈县| 象山县| 阿拉善盟| 丰镇市| 环江| 乃东县| 扎鲁特旗| 江永县| 杭州市| 行唐县| 贡觉县| 稷山县| 广昌县| 石景山区| 乐都县|