国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OPENCV C++(六)canny邊緣檢測+仿射變換+透射變換

這篇具有很好參考價(jià)值的文章主要介紹了OPENCV C++(六)canny邊緣檢測+仿射變換+透射變換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

圖像的縮放

	resize(image, image, Size(round(image.cols * 0.5), round(image.rows * 0.5)));

?輸入圖像 輸出圖像 大小變換

canny邊緣算子的使用

	cvtColor(image, gray, COLOR_BGR2GRAY);
	Canny(gray, canny_mat, 40, 100);

?必須先轉(zhuǎn)化為灰度圖,作為輸入 超過100是真的邊緣 低于40是確定不是邊緣 在中間若連接邊緣 則為邊緣?

普通旋轉(zhuǎn)縮放變換(仿射變換)

?獲取仿射變換矩陣

	float angel = -10.0, scale = 1;
	Mat dstmat;
	Point2f center(image.cols * 0.5, image.rows * 0.5);
	Mat affine_matrix = getRotationMatrix2D(center, angel, scale);

獲取仿射變換的矩陣 中心點(diǎn) 旋轉(zhuǎn)角度 大小是否變換

-10是順時(shí)針轉(zhuǎn)

仿射變換函數(shù)

warpAffine(image, dstmat, affine_matrix,image.size());

輸入圖 輸出圖 仿射變換矩陣 畫布的大小?

這樣的仿射變換有旋轉(zhuǎn)的缺陷,因?yàn)榇笮『驮瓐D一樣,但旋轉(zhuǎn)后,外接矩形肯定大于原圖,所以溢出的部分會看不到,后期會更新改進(jìn)版

點(diǎn)到點(diǎn)的仿射變換(6變量?所以要3個點(diǎn)對3個點(diǎn))

	Mat affine_Mat;
	const cv::Point2f src_pt[] = {
		  cv::Point2f(100,100),
		  cv::Point2f(20,30),
		  cv::Point2f(70,90),
	};
	const cv::Point2f warp_pt[] = {
		  cv::Point2f(50,100),
		  cv::Point2f(50,20),
		  cv::Point2f(70,96),
	};

	Mat affine_matrix2 = cv::getAffineTransform(src_pt, warp_pt);

	warpAffine(image, affine_Mat, affine_matrix2,image.size());

一個點(diǎn)對應(yīng)一個點(diǎn)?

計(jì)算機(jī)會幫我們求出仿射變換的矩陣

點(diǎn)到點(diǎn)的透射變換(8變量?所以要4個點(diǎn)對4個點(diǎn))

	Mat perspective_Mat;
	cv::Point2f pts1[] = {
		cv::Point2f(150,150),
		cv::Point2f(150,300),
		cv::Point2f(350,300),
		cv::Point2f(350,150),

	};
	cv::Point2f pts2[] = {
	cv::Point2f(200,150),
	cv::Point2f(200,300),
	cv::Point2f(340,270),
	cv::Point2f(340,180),
	};

	Mat perspective_matrix = cv::getPerspectiveTransform(pts1, pts2);
	warpPerspective(image, perspective_Mat, perspective_matrix, image.size());

?總體代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-628252.html

#include <opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;


int main() {
	Mat image = imread("lena.jpeg");
	imshow("lena", image);
	waitKey(0);
	cvDestroyAllWindows();

	resize(image, image, Size(round(image.cols * 0.5), round(image.rows * 0.5)));
	imshow("lena", image);
	waitKey(0);
	cvDestroyAllWindows();

	Mat gray;
	Mat canny_mat;
	cvtColor(image, gray, COLOR_BGR2GRAY);
	Canny(gray, canny_mat, 40, 100);
	imshow("canny_mat", canny_mat);
	waitKey(0);
	cvDestroyAllWindows();	

	float angel = -10.0, scale = 1;
	Mat dstmat;
	Point2f center(image.cols * 0.5, image.rows * 0.5);
	Mat affine_matrix = getRotationMatrix2D(center, angel, scale);
	warpAffine(image, dstmat, affine_matrix,image.size());
	imshow("dstmat", dstmat);
	waitKey(0);
	cvDestroyAllWindows();


	Mat affine_Mat;
	const cv::Point2f src_pt[] = {
		  cv::Point2f(100,100),
		  cv::Point2f(20,30),
		  cv::Point2f(70,90),
	};
	const cv::Point2f warp_pt[] = {
		  cv::Point2f(50,100),
		  cv::Point2f(50,20),
		  cv::Point2f(70,96),
	};

	Mat affine_matrix2 = cv::getAffineTransform(src_pt, warp_pt);

	warpAffine(image, affine_Mat, affine_matrix2,image.size());
	imshow("affine_Mat", affine_Mat);
	waitKey(0);
	cvDestroyAllWindows();



	Mat perspective_Mat;
	cv::Point2f pts1[] = {
		cv::Point2f(150,150),
		cv::Point2f(150,300),
		cv::Point2f(350,300),
		cv::Point2f(350,150),

	};
	cv::Point2f pts2[] = {
	cv::Point2f(200,150),
	cv::Point2f(200,300),
	cv::Point2f(340,270),
	cv::Point2f(340,180),
	};

	Mat perspective_matrix = cv::getPerspectiveTransform(pts1, pts2);
	warpPerspective(image, perspective_Mat, perspective_matrix, image.size());
	imshow("perspective_Mat", perspective_Mat);
	waitKey(0);
	cvDestroyAllWindows();

	//疑問 圖像的平移如何實(shí)現(xiàn)  image.size()是什么個東西 如何改變圖像大小?


	
	return 0;
}

到了這里,關(guān)于OPENCV C++(六)canny邊緣檢測+仿射變換+透射變換的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • opencv(23) Canny邊緣檢測流程(Canny算子)

    opencv(23) Canny邊緣檢測流程(Canny算子)

    Canny 邊緣檢測算法 是 John F. Canny 于 1986年開發(fā)出來的一個多級邊緣檢測算法,也被很多人認(rèn)為是邊緣檢測的 最優(yōu)算法 , 最優(yōu)邊緣檢測的三個主要評價(jià)標(biāo)準(zhǔn)是: 低錯誤率: 標(biāo)識出盡可能多的實(shí)際邊緣,同時(shí)盡可能的減少噪聲產(chǎn)生的誤報(bào)。 高定位性: 標(biāo)識出的邊緣要與圖像中的實(shí)

    2024年04月11日
    瀏覽(30)
  • 【OpenCV】第十章: Canny邊緣檢測

    【OpenCV】第十章: Canny邊緣檢測

    第十章: Canny邊緣檢測 canny邊緣檢測是一種一階微分算子檢測算法,但為什么還要單獨(dú)拿出來講呢,因?yàn)樗鼛缀跏沁吘墮z測算子中最優(yōu)秀的邊緣檢測算子,你很難找到一種邊緣檢測算子能顯著地比Canny算子做的更好。 Canny提出了邊緣檢測算子優(yōu)劣評判的三條標(biāo)準(zhǔn): 1、較高的檢

    2024年02月03日
    瀏覽(21)
  • opencv-Canny 邊緣檢測

    opencv-Canny 邊緣檢測

    Canny邊緣檢測是一種經(jīng)典的圖像邊緣檢測算法,它在圖像中找到強(qiáng)度梯度的變化,從而 識別出圖像中的邊緣 。 Canny邊緣檢測的優(yōu)點(diǎn)包括高靈敏度和低誤檢率。 在OpenCV中, cv2.Canny() 函數(shù)用于執(zhí)行Canny邊緣檢測。 基本語法如下: 參數(shù)說明: image : 輸入圖像,通常為灰度圖像。

    2024年02月22日
    瀏覽(26)
  • opencv(七)Canny邊緣檢測和圖像輪廓檢測

    opencv(七)Canny邊緣檢測和圖像輪廓檢測

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 1、檢測步驟 1)使用高斯濾波器,以平滑圖像,濾掉噪聲。 2)計(jì)算圖像中每個像素點(diǎn)的梯度強(qiáng)度和方向 3)應(yīng)用非極大值(Non-Maximum Suppression)抑制,以消除邊緣檢測帶來的雜散響應(yīng) 4)應(yīng)用雙閾值(

    2024年02月04日
    瀏覽(19)
  • Python Opencv實(shí)踐 - Canny邊緣檢測
  • 【OpenCV實(shí)現(xiàn)圖像梯度,Canny邊緣檢測】

    【OpenCV實(shí)現(xiàn)圖像梯度,Canny邊緣檢測】

    OpenCV中,可以使用各種函數(shù)實(shí)現(xiàn)圖像梯度和Canny邊緣檢測,這些操作對于圖像處理和分析非常重要。 圖像梯度通常用于尋找圖像中的邊緣和輪廓。在OpenCV中,可以使用cv2.Sobel()函數(shù)計(jì)算圖像的梯度,該函數(shù)可以計(jì)算圖像在水平和垂直方向上的梯度。梯度的方向和大小可以幫助

    2024年02月07日
    瀏覽(21)
  • OpenCV自學(xué)筆記十四:Canny邊緣檢測

    Canny邊緣檢測是一種經(jīng)典的圖像邊緣檢測算法,具有以下幾個步驟: 1. 噪聲抑制:首先對圖像進(jìn)行平滑處理,以去除圖像中的噪聲。常用的方法是應(yīng)用高斯濾波器。 2. 計(jì)算梯度:通過對平滑后的圖像應(yīng)用Sobel算子(或其他梯度算子),計(jì)算圖像的梯度幅值和梯度方向。梯度表

    2024年02月08日
    瀏覽(21)
  • 【OpenCV ? c++】圖像幾何變換 | 圖像仿射變換

    【OpenCV ? c++】圖像幾何變換 | 圖像仿射變換

    ?? 個人簡介:CSDN「 博客新星 」TOP 10 , C/C++ 領(lǐng)域新星創(chuàng)作者 ?? 作 ?? 者: 錫蘭_CC ?? ?? 專 ?? 欄: 【OpenCV ? c++】計(jì)算機(jī)視覺 ?? 若有幫助,還請 關(guān)注?點(diǎn)贊?收藏 ,不行的話我再努努力??????

    2024年02月16日
    瀏覽(91)
  • OpenCV 筆記(12):常用的邊緣檢測算子—— Canny

    OpenCV 筆記(12):常用的邊緣檢測算子—— Canny

    一階導(dǎo)數(shù)、二階導(dǎo)數(shù)的邊緣算子雖然簡單易用,但存在一些缺點(diǎn)。例如容易受噪聲影響,容易產(chǎn)生虛假邊緣。 John F. Canny 在 1986 年提出了 Canny 邊緣檢測算法。它是結(jié)合了梯度計(jì)算方法和非極大值抑制技術(shù)的一種邊緣檢測算法。該算法克服了之前的邊緣檢測算法在抑制噪聲和保

    2024年02月03日
    瀏覽(20)
  • opencv 邊緣檢測 cv2.Canny()詳解

    ????? 個人簡介: 深度學(xué)習(xí)圖像領(lǐng)域工作者 ?? 總結(jié)鏈接: ???????????? 鏈接中主要是個人工作的總結(jié),每個鏈接都是一些常用demo,代碼直接復(fù)制運(yùn)行即可。包括: ?????????????????????? 1.工作中常用深度學(xué)習(xí)腳本 ?????????????????????? 2.to

    2024年02月03日
    瀏覽(111)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包