中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

合肥市網(wǎng)站建設(shè)優(yōu)化營商環(huán)境條例心得體會(huì)

合肥市網(wǎng)站建設(shè),優(yōu)化營商環(huán)境條例心得體會(huì),網(wǎng)站建設(shè)成本,女孩子做網(wǎng)站推廣Kotlin Bytedeco OpenCV 圖像圖像54 透視變換 圖像矯正 1 添加依賴2 測(cè)試代碼3 測(cè)試結(jié)果 在OpenCV中,仿射變換(Affine Transformation)和透視變換(Perspective Transformation)是兩種常用的圖像幾何變換方法。 變換方…

Kotlin Bytedeco OpenCV 圖像圖像54 透視變換 圖像矯正

  • 1 添加依賴
  • 2 測(cè)試代碼
  • 3 測(cè)試結(jié)果

在OpenCV中,仿射變換(Affine Transformation)和透視變換(Perspective Transformation)是兩種常用的圖像幾何變換方法。

變換方法適用場(chǎng)景
仿射變換簡(jiǎn)單的幾何變換(平移、旋轉(zhuǎn)、縮放、剪切)。
透視變換改變圖像視角和模擬3D投影效果。
變換方法解釋特點(diǎn)應(yīng)用場(chǎng)景實(shí)現(xiàn)方法
仿射變換仿射變換是一種線性變換,它保持了圖像中直線的直線性和平行線的平行性。常見的仿射變換包括平移、旋轉(zhuǎn)、縮放、剪切等。輸入空間和輸出空間之間存在線性關(guān)系。
直線和平行性在變換后保持不變,但角度和長(zhǎng)度可能發(fā)生改變。
圖像平移、旋轉(zhuǎn)或縮放。
圖像對(duì)齊(如在模板匹配中的坐標(biāo)對(duì)齊)。
簡(jiǎn)單的幾何變形,如剪切變換。
準(zhǔn)備變換矩陣(2x3)。
使用 OpenCV 的 cv2.warpAffine() 方法進(jìn)行變換。
透視變換透視變換是一種非線性變換,用于將圖像從一個(gè)平面映射到另一個(gè)平面。它允許改變圖像的視角,從而獲得三維的透視效果。輸入空間和輸出空間之間是非線性的。
直線保持直線,但平行線不再平行。
需要 4 對(duì)點(diǎn)來定義變換關(guān)系。
圖像校正(如將拍攝的書本照片調(diào)整為平面圖)。
視角轉(zhuǎn)換(如模擬3D效果或鳥瞰視圖)。
投影變換(如在增強(qiáng)現(xiàn)實(shí)中的投影映射)。
定義輸入和輸出平面上的 4 個(gè)對(duì)應(yīng)點(diǎn)。
使用 cv2.getPerspectiveTransform() 獲取 3x3 的透視變換矩陣。
使用 cv2.warpPerspective() 方法進(jìn)行變換。

1 添加依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xu</groupId><artifactId>KotlinOpenCV</artifactId><version>1.0</version><properties><kotlin.version>2.0.0</kotlin.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><kotlin.code.style>official</kotlin.code.style><kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget></properties><repositories><repository><id>mavenCentral</id><url>https://repo1.maven.org/maven2/</url></repository></repositories><dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.29</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>1.27.0</version></dependency><dependency><groupId>org.tukaani</groupId><artifactId>xz</artifactId><version>1.10</version></dependency><dependency><groupId>org.jetbrains.kotlinx</groupId><artifactId>kotlinx-coroutines-core</artifactId><version>1.9.0-RC</version></dependency><!--        <dependency>--><!--            <groupId>org.opencv</groupId>--><!--            <artifactId>opencv</artifactId>--><!--            <version>4100</version>--><!--            <scope>system</scope>--><!--            <systemPath>${project.basedir}/lib/opencv/opencv-4100.jar</systemPath>--><!--        </dependency>--><dependency><groupId>org.bytedeco</groupId><artifactId>opencv-platform</artifactId><version>4.10.0-1.5.11</version></dependency><!--        <dependency>--><!--            <groupId>org.bytedeco</groupId>--><!--            <artifactId>ffmpeg-platform</artifactId>--><!--            <version>6.1.1-1.5.10</version>--><!--        </dependency>--><dependency><groupId>org.jetbrains.kotlin</groupId><artifactId>kotlin-test-junit5</artifactId><version>2.0.0</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.10.0</version><scope>test</scope></dependency><dependency><groupId>org.jetbrains.kotlin</groupId><artifactId>kotlin-stdlib</artifactId><version>2.0.0</version></dependency></dependencies><build><sourceDirectory>src/main/kotlin</sourceDirectory><testSourceDirectory>src/test/kotlin</testSourceDirectory><plugins><plugin><groupId>org.jetbrains.kotlin</groupId><artifactId>kotlin-maven-plugin</artifactId><version>2.0.0</version><executions><execution><id>compile</id><phase>compile</phase><goals><goal>compile</goal></goals></execution><execution><id>test-compile</id><phase>test-compile</phase><goals><goal>test-compile</goal></goals></execution></executions></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.2</version></plugin><plugin><artifactId>maven-failsafe-plugin</artifactId><version>2.22.2</version></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>1.6.0</version><configuration><mainClass>MainKt</mainClass></configuration></plugin></plugins></build></project>

2 測(cè)試代碼

package com.xu.com.xu.transimport org.bytedeco.javacpp.Loader
import org.bytedeco.javacpp.Pointer
import org.bytedeco.opencv.global.opencv_core
import org.bytedeco.opencv.global.opencv_highgui
import org.bytedeco.opencv.global.opencv_imgcodecs
import org.bytedeco.opencv.global.opencv_imgproc
import org.bytedeco.opencv.opencv_core.Mat
import org.bytedeco.opencv.opencv_core.Point
import org.bytedeco.opencv.opencv_core.Point2f
import org.bytedeco.opencv.opencv_core.Scalar
import org.bytedeco.opencv.opencv_highgui.MouseCallbackobject Restore {init {Loader.load(opencv_core::class.java)}@JvmStaticfun main(args: Array<String>) {restore(1)}/*** 透視變換 圖像修改** @since 2025年1月20日12點(diǎn)33分*/private fun restore(type: Int) {// 讀取圖像val src = opencv_imgcodecs.imread("C:\\Users\\xuyq\\Desktop\\11.png")if (src == null || src.empty()) {return}// 創(chuàng)建源點(diǎn)矩陣4個(gè)點(diǎn)val org = Mat(1, 4, opencv_core.CV_32FC2)org.ptr(0, 0).put<Pointer>(Point2f(0f, 0f))org.ptr(0, 1).put<Pointer>(Point2f(src.cols().toFloat(), 0f))org.ptr(0, 2).put<Pointer>(Point2f(src.cols().toFloat(), src.rows().toFloat()))org.ptr(0, 3).put<Pointer>(Point2f(0f, src.rows().toFloat()))// 創(chuàng)建目標(biāo)點(diǎn)矩陣4個(gè)點(diǎn)val dst = Mat(1, 4, opencv_core.CV_32FC2)if (1 == type) {val target = click(src)for (i in target.indices) {dst.ptr(0, i).put<Pointer>(target[i])}} else {dst.ptr(0, 0).put<Pointer>(Point2f(21f, 20f))dst.ptr(0, 1).put<Pointer>(Point2f(953f, 74f))dst.ptr(0, 2).put<Pointer>(Point2f(847f, 574f))dst.ptr(0, 3).put<Pointer>(Point2f(109f, 643f))}// 獲取透視變換矩陣val matrix = opencv_imgproc.getPerspectiveTransform(dst, org)// 應(yīng)用透視變換val images = Mat()opencv_imgproc.warpPerspective(src, images, matrix, src.size())// 顯示結(jié)果opencv_highgui.imshow("RESTORE", images)opencv_highgui.waitKey(0)}private fun click(image: Mat): List<Point2f> {// 創(chuàng)建畫布(白色背景)val window = "Click"// 創(chuàng)建窗口opencv_highgui.namedWindow(window, opencv_highgui.WINDOW_AUTOSIZE)val points = listOf<Point2f>().toMutableList()// 創(chuàng)建鼠標(biāo)回調(diào)對(duì)象val callback = object : MouseCallback() {override fun call(event: Int, x: Int, y: Int, flags: Int, params: Pointer?) {when (event) {opencv_highgui.EVENT_LBUTTONDOWN -> {println("點(diǎn)擊點(diǎn): ($x, $y)")points.add(Point2f(x.toFloat(), y.toFloat()))// 在原圖上繪制點(diǎn)opencv_imgproc.circle(image, Point(x, y), 5,Scalar(0.0, 0.0, 255.0, 0.0), -1, opencv_imgproc.LINE_AA, 0)opencv_highgui.imshow(window, image)}}}}// 設(shè)置鼠標(biāo)回調(diào)opencv_highgui.setMouseCallback(window, callback, null)// 主循環(huán)while (true) {opencv_highgui.imshow(window, image)if (opencv_highgui.waitKey(1).toChar() == 27.toChar() || points.size >= 4) {opencv_highgui.destroyWindow(window)break}}return points}}

3 測(cè)試結(jié)果

在這里插入圖片描述
在這里插入圖片描述

http://www.risenshineclean.com/news/1003.html

相關(guān)文章:

  • 網(wǎng)站模板下載器成都關(guān)鍵詞排名推廣
  • 大氣的企業(yè)網(wǎng)站模板視頻推廣
  • 怎么用dw做地圖網(wǎng)站百度推廣需要什么條件
  • 做網(wǎng)站 除了域名怎么聯(lián)系百度客服
  • 住建培訓(xùn)網(wǎng)站線上宣傳有哪些好的方式方法
  • 如何做網(wǎng)站商城2345網(wǎng)址導(dǎo)航安裝
  • 新網(wǎng)頁游戲開服表seo推廣軟件下載
  • 賺錢網(wǎng)站怎么做的河北百度seo關(guān)鍵詞
  • 做網(wǎng)站背景步驟百度應(yīng)用
  • 阜陽營銷型網(wǎng)站建設(shè)做網(wǎng)站推廣一般多少錢
  • 常州做網(wǎng)站麥策電商戶外廣告
  • 網(wǎng)站信息內(nèi)容建設(shè) 宣傳部門游戲優(yōu)化大師
  • 網(wǎng)站開發(fā)高級(jí)工程師專業(yè)怎樣申請(qǐng)網(wǎng)站注冊(cè)
  • 新聞網(wǎng)站建設(shè)評(píng)比規(guī)則2023重大新聞事件10條
  • 網(wǎng)站圖片上的水印怎么做網(wǎng)絡(luò)營銷專業(yè)就業(yè)公司
  • seo擦邊球網(wǎng)站什么廣告推廣最有效果
  • dw用層還是表格做網(wǎng)站快色盲圖
  • 做外貿(mào)哪些網(wǎng)站可以發(fā)免費(fèi)信息大批量刷關(guān)鍵詞排名軟件
  • 海外永久網(wǎng)站百度一下你就知道移動(dòng)官網(wǎng)
  • 論壇網(wǎng)站開發(fā)外包公司什么意思
  • 網(wǎng)頁游戲人生重開模擬器如何把一個(gè)關(guān)鍵詞優(yōu)化到首頁
  • 網(wǎng)站滾動(dòng)效果怎么做站長(zhǎng)工具怎么關(guān)掉
  • 淘寶開放平臺(tái)怎么做淘寶客網(wǎng)站網(wǎng)絡(luò)推廣費(fèi)用一般多少
  • 杭州網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)安卓?jī)?yōu)化大師app下載安裝
  • 運(yùn)城網(wǎng)站建設(shè)公司有多少錢愛站網(wǎng)seo
  • 邢臺(tái)網(wǎng)站建設(shè)要多少錢揚(yáng)州百度關(guān)鍵詞優(yōu)化
  • 境外網(wǎng)站開發(fā)北京it培訓(xùn)機(jī)構(gòu)哪家好
  • 做視頻能賺錢的網(wǎng)站seoheuni
  • 如何注冊(cè)公司微信公眾號(hào)網(wǎng)站seo系統(tǒng)
  • 國外做建材的網(wǎng)站有哪些手機(jī)端競(jìng)價(jià)惡意點(diǎn)擊能防止嗎