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

opencv仿射變換

這篇具有很好參考價值的文章主要介紹了opencv仿射變換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

#include <opencv2/opencv.hpp>

/*
功能:對一系列坐標(biāo)點進(jìn)行平移仿射變換
參數(shù):
srcPoints:輸入點坐標(biāo)
dstPoints:變換后的點坐標(biāo)
x:x方向平移的距離
y:y方向平移的距離
*/
void tranlatePoints(std::vector<cv::Point2f>& srcPoints, std::vector<cv::Point2f>& dstPoints,double x,double y)
{
?? ?cv::Mat affineMatrix = (cv::Mat_<double>(2, 3) << 1, 0, x, 0, 1,y);
?? ?cv::transform(srcPoints, dstPoints, affineMatrix);
}

/*
功能:對一系列點進(jìn)行旋轉(zhuǎn)仿射變換
參數(shù):
srcPoints:輸入點坐標(biāo)
dstPoints:變換后的點坐標(biāo)
basePoint:旋轉(zhuǎn)基準(zhǔn)點
zoomRate:縮放比例,默認(rèn)為1表示不縮放
*/
void rotatePoints(std::vector<cv::Point2f>& srcPoints, std::vector<cv::Point2f>& dstPoints, cv::Point& basePoint,int degree, float zoomRate=1)
{
?? ?cv::Mat affineMatrix = cv::getRotationMatrix2D(basePoint,degree,zoomRate);
?? ?cv::transform(srcPoints, dstPoints, affineMatrix);
}

/*
功能:對一系列點進(jìn)行縮放仿射變換
參數(shù):
srcPoints:輸入點坐標(biāo)
dstPoints:變換后的點坐標(biāo)
basePoint:縮放基準(zhǔn)點
zoomRate:縮放比例
*/
void zoomPoints(std::vector<cv::Point2f>& srcPoints, std::vector<cv::Point2f>& dstPoints, cv::Point& basePoint,float zoomRate)
{
?? ?cv::Mat affineMatrix = cv::getRotationMatrix2D(basePoint,0,zoomRate);
?? ?cv::transform(srcPoints, dstPoints, affineMatrix);
}

/*
功能:對一張圖片進(jìn)行平移
參數(shù):
src:要平移的圖片
dst:平移的結(jié)果
x:x方向平移的距離
y:y方向平移的距離
*/
void translateImage(cv::Mat& src, cv::Mat& dst, double x, double y)
{
?? ?cv::Mat M = (cv::Mat_<double>(2, 3) << 1, 0, x, 0, 1, y);
?? ?cv::warpAffine(src, dst, M, src.size());
}

/*
功能:對一張圖片進(jìn)行旋轉(zhuǎn)
參數(shù):
image:輸入圖像
imgOut:旋轉(zhuǎn)后的圖像
angle:旋轉(zhuǎn)角度
*/
void rotateImage(cv::Mat& image, cv::Mat& imgOut, int angle)
{
?? ?/*
?? ?對旋轉(zhuǎn)的進(jìn)行改進(jìn),由于圖形是一個矩形,旋轉(zhuǎn)后的新圖像的形狀是一個原圖像的外接矩形
?? ?因此需要重新計算出旋轉(zhuǎn)后的圖形的寬和高
?? ?*/
?? ?int width = image.cols;
?? ?int height = image.rows;

?? ?double radian = angle * CV_PI / 180.;//角度轉(zhuǎn)換為弧度
?? ?double width_rotate = fabs(width*cos(radian)) + fabs(height*sin(radian));
?? ?double height_rotate = fabs(width*sin(radian)) + fabs(height*cos(radian));

?? ?//旋轉(zhuǎn)中心 原圖像中心點
?? ?cv::Point2f center((float)width / 2.0, (float)height / 2.0);
?? ?//旋轉(zhuǎn)矩陣
?? ?cv::Mat m1 = cv::getRotationMatrix2D(center, angle, 1.0);
?? ?//m1為2行3列通道數(shù)為1的矩陣
?? ?//變換矩陣的中心點相當(dāng)于平移一樣 原圖像的中心點與新圖像的中心點的相對位置
?? ?m1.at<double>(0, 2) += (width_rotate - width) / 2.;
?? ?m1.at<double>(1, 2) += (height_rotate - height) / 2.;
?? ?if (image.channels() == 1)
?? ?{
?? ??? ?cv::warpAffine(image, imgOut, m1, cv::Size(width_rotate, height_rotate), cv::INTER_LINEAR, 0, cv::Scalar(0));
?? ?}
?? ?else if (image.channels() == 3)
?? ?{
?? ??? ?cv::warpAffine(image, imgOut, m1, cv::Size(width_rotate, height_rotate), cv::INTER_LINEAR, 0, cv::Scalar(0,0,0));
?? ?}
}

/*
功能:對一張圖片進(jìn)行縮放
參數(shù):
src:輸入圖像
dst:縮放后的圖像
basePoint:縮放基準(zhǔn)點
zoomRate:縮放比例
*/
void zoomImage(cv::Mat& src, cv::Mat& dst, cv::Point& rotaPoint, float zoomRate)
{
?? ?cv::Mat M = cv::getRotationMatrix2D(rotaPoint, 0, zoomRate);
?? ?cv::warpAffine(src, dst, M, src.size());
}

//#define TESTPOINTS
#define TESTIMAGE

int main() {
#ifdef TESTPOINTS
?? ?// 創(chuàng)建原始點集
?? ?std::vector<cv::Point2f> srcPoints = { cv::Point2f(100, 100), cv::Point2f(200, 200), cv::Point2f(300, 300) };
?? ?//變換點集
?? ?std::vector<cv::Point2f> dstPoints;
?? ?//tranlatePoints(srcPoints, dstPoints, 10, 10);
?? ?cv::Point point(0, 0);
?? ?//rotatePoints(srcPoints, dstPoints, point,180);
?? ?//zoomPoints(srcPoints, dstPoints, point, 0.5);

?? ?// 輸出結(jié)果
?? ?std::cout << "原始點集: ";
?? ?for (const auto& point : srcPoints) {
?? ??? ?std::cout << point << " ";
?? ?}
?? ?std::cout << std::endl;

?? ?std::cout << "仿射變換后的點集: ";
?? ?for (const auto& point : dstPoints) {
?? ??? ?std::cout << point << " ";
?? ?}
?? ?std::cout << std::endl;
#endif // TESTPOINTS

#ifdef TESTIMAGE
?? ?cv::Mat img1 = cv::imread("D:/20240103141532.png");
?? ?cv::Mat dst;
?? ?//translateImage(img1, dst, -50, 50);
?? ?//cv::imshow("src",img1);
?? ?//cv::imshow("1", dst);
?? ?//cv::waitKey(0);
?? ?
?? ?//for (int i = 0; i < 36; i++)
?? ?//{
?? ?//?? ?rotateImage(img1, dst,i * 10);
?? ?//?? ?cv::imshow("1", dst);
?? ?//?? ?cv::waitKey(0);
?? ?//}

?? ?//int width = img1.cols;
?? ?//int height = img1.rows;
?? ?//cv::Point basePoint((float)width / 2.0, (float)height / 2.0);
?? ?//zoomImage(img1, dst, basePoint, 0.5);
?? ?//cv::imshow("src", img1);
?? ?//cv::imshow("1", dst);
?? ?//cv::waitKey(0);
#endif // TESTIMAGE
?? ?return 0;
}文章來源地址http://www.zghlxwxcb.cn/news/detail-795463.html

到了這里,關(guān)于opencv仿射變換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 人工智能與計算機輔助決策的技術(shù)融合

    人工智能(Artificial Intelligence, AI)和計算機輔助決策(Computer-Aided Decision, CAD)是兩個不同的領(lǐng)域,但它們之間存在密切的聯(lián)系和相互作用。人工智能主要關(guān)注于模擬和創(chuàng)造人類智能的機器,包括學(xué)習(xí)、理解自然語言、視覺識別、推理和決策等方面。而計算機輔助決策則關(guān)注于利用

    2024年02月22日
    瀏覽(34)
  • hnu計算機與人工智能概論5.6

    hnu計算機與人工智能概論5.6

    最近有點忙,好久沒更新了,大家見諒!最后一關(guān)howell也做不出來 ?第1關(guān):數(shù)據(jù)分析基礎(chǔ) 1.將scores.xls文件讀到名為df的dataframe中 2.添加平均分列:考勤、實驗操作、實驗報告的平均 3.輸出前3行學(xué)生的平均分列表,控制小數(shù)點后兩位 4.輸出學(xué)生人數(shù)和班級數(shù) 5.分別輸出實驗報

    2024年02月04日
    瀏覽(26)
  • 探索人工智能 | 智能推薦系統(tǒng) 未來沒有人比計算機更懂你

    探索人工智能 | 智能推薦系統(tǒng) 未來沒有人比計算機更懂你

    智能推薦系統(tǒng)(Recommendation Systems)利用機器學(xué)習(xí)和數(shù)據(jù)挖掘技術(shù),根據(jù)用戶的興趣和行為,提供個性化推薦的產(chǎn)品、內(nèi)容或服務(wù)。 智能推薦系統(tǒng)是一種利用機器學(xué)習(xí)和數(shù)據(jù)分析技術(shù)的應(yīng)用程序,旨在根據(jù)用戶的興趣、偏好和行為模式,向其推薦個性化的產(chǎn)品、服務(wù)或內(nèi)容。

    2024年02月13日
    瀏覽(52)
  • 階段五:深度學(xué)習(xí)和人工智能(學(xué)習(xí)人工智能的應(yīng)用領(lǐng)域,如自然語言處理,計算機視覺等)

    Python是人工智能領(lǐng)域最流行的編程語言之一,它具有簡單易學(xué)、功能強大、庫豐富等優(yōu)點,因此在自然語言處理、計算機視覺等領(lǐng)域得到了廣泛應(yīng)用。 自然語言處理 自然語言處理是人工智能領(lǐng)域的一個重要分支,它主要研究如何讓計算機理解和處理人類語言。Python在自然語

    2024年02月04日
    瀏覽(46)
  • hnu計算機與人工智能概論答案3.8

    hnu計算機與人工智能概論答案3.8

    連夜更新,求求關(guān)注??! 寫在前面:這一課難度較低,報錯時多看看冒號和縮進(jìn)有無錯誤,祝大家做題順利?。?! 第1關(guān):python分支入門基礎(chǔ) 根據(jù)提示,在右側(cè)編輯器補充代碼,完成分支程序設(shè)計(用函數(shù)調(diào)用的方式來實現(xiàn))。 第1題: 閏年的判斷:判斷某一年是否是閏年,

    2024年02月08日
    瀏覽(26)
  • hnu計算機與人工智能概論答案2.20

    hnu計算機與人工智能概論答案2.20

    補一下第一次作業(yè) 第1關(guān):數(shù)據(jù)輸入與輸出 第一題 在屏幕上輸出字符串:hi, \\\"how are you\\\" ,I\\\'m fine and you 第二題 從鍵盤輸入兩個整數(shù),計算兩個數(shù)相除的商與余數(shù) 假設(shè)輸入12,5 輸出為 2 2 第三題 在屏幕上 輸入一個三位數(shù)輸出該數(shù)的個位、十位和百位數(shù)字 假設(shè)輸入125 輸出為 5 2

    2024年02月08日
    瀏覽(30)
  • hnu計算機與人工智能概論答案3.15

    hnu計算機與人工智能概論答案3.15

    ?終于肝完了!有一說一,這一次難度肉眼可見的提升,終于明白程序員為什么會禿頂了(頭發(fā)真的禁不住薅啊),祝大家好運! 第1關(guān):循環(huán)結(jié)構(gòu)-while與for循環(huán) 第1題 編程計算如下公式的值1^2+3^2+5^2+...+995^2+997^2+999^2并輸出結(jié)果 第2題 用 while 語句完成程序邏輯,求如下算法可

    2024年02月08日
    瀏覽(94)
  • 人工智能在計算機視覺中的應(yīng)用與挑戰(zhàn)

    引言 計算機視覺是人工智能領(lǐng)域的一個重要分支,旨在讓計算機能夠像人一樣理解和解釋視覺信息,實現(xiàn)圖像和視頻的自動識別、理解和分析。計算機視覺技術(shù)已經(jīng)在許多領(lǐng)域產(chǎn)生了深遠(yuǎn)的影響,如人臉識別、自動駕駛、醫(yī)學(xué)影像分析等。本篇博客將深入探討人工智能在計算

    2024年02月14日
    瀏覽(26)
  • hnu計算機與人工智能概論5.26(方程求根)

    第1關(guān):用暴力搜索法求方程的近似根? 本關(guān)任務(wù):用暴力搜索法求 f(x)=x3?x?1 在[-10,10]之間的近似根。已知f(-10)0,f(10)0,畫圖可知函數(shù)在[-10,10]區(qū)間有且僅有一個根。要求近似根帶入函數(shù)f(x)之后,函數(shù)值與0之間的誤差在 10?6 之內(nèi),請保留4位小數(shù)輸出該根值,并輸出搜尋次

    2024年02月03日
    瀏覽(26)
  • 讀十堂極簡人工智能課筆記04_計算機視覺

    讀十堂極簡人工智能課筆記04_計算機視覺

    3.2.3.1.?應(yīng)該發(fā)現(xiàn)真正的邊緣,而盡量避免錯報 3.2.4.1.?應(yīng)該正確地找出邊緣的確切位置 3.2.5.1.?每條實際的邊緣應(yīng)該檢測為一條邊緣,而不是多條邊緣 4.7.5.1.?有數(shù)以百萬計的幾乎任何種類的圖像例子 4.7.7.1.?神經(jīng)網(wǎng)絡(luò)自己就能完成這一切

    2024年02月19日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包