python opencv旋轉_Python opencv實現與rotatedrect類似的矩形旋轉,pythonopencv,RotatedRect

本文原理:先旋轉矩形到指定角度,然后提取矩形外輪廓,從而獲取旋轉后的矩形坐標點。

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

# @Author: tcy

# @Date: 2020-5-2 21:00:53

# @Version:V1.01

# @Last Modified by: tcy shanghai songjiang xiaokunshan

# @Last Modified time: 2020-5-7 21:21:10

import cv2,numpy as np

class Geometry(object):

def rotation_Scale(self,src, angle:'float',rotation_center:'(float,float)'=None,scale:'float'=1)->np.ndarray:#彩色:旋轉縮放

"""

:param src: ndarray

:param angle: float rotation angle

:param scale: float

:return: ndarray

retval = cv2.getRotationMatrix2D(center, angle, scale) // 圖像旋轉轉換矩陣

參數:

center旋轉中心點;

angle旋轉角度(正為逆時針)

scale變換尺度(縮放大小)

"""

rows, cols = src.shape[:2]

cx=rotation_center[0] if rotation_center else cols/2.0

cy=rotation_center[1] if rotation_center else rows/2.0

# cols - 1 and rows - 1 are the coordinate limits.

M = cv2.getRotationMatrix2D((cx, cy), angle, scale)

dst = cv2.warpAffine(src, M, (int(2*cx), int(2*cy)))

return dst

def circleRect(self,rect:"(pt1,pt2)",angle:float,w_image=480,h_image=640,rectcenter=True):

"""

:param rect: int,int,int,int 矩形左上角右下角坐標

:param angle: 旋轉角度 非弧度

:param w_image: 圖像寬度

:param h_image: 圖像高

:param rectcenter: bool or (int x,int y)指定繞指定點旋轉;True繞矩形中心旋轉;false繞圖像中心旋轉

:return: rect旋轉后矩陣坐標點;可能多于4點

"""

img=np.zeros((w_image,h_image),dtype=np.uint8)

cv2.rectangle(img,rect[0],rect[1],255,-1)

if len(rect)==4:

x1,y1,x2,y2=rect

else:

x1,y1=rect[0]

x2,y2=rect[1]

w_rect,h_rect=abs(x2-x1),abs(y2-y1)

# ret,binary=cv2.threshold(img,254,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

# cv2.line(img,(w_rect,h_rect),(w_rect,h_rect),125,5)

if rectcenter==False:

img_rotation=self.rotation_Scale(img,angle) #繞圖像中心點旋轉

elif rectcenter==True:

img_rotation=self.rotation_Scale(img,angle,(w_rect,h_rect))#繞矩形中心點旋轉

else:#參數設置不合理只能顯示部分圖像

img_rotation=self.rotation_Scale(img,angle,(rectcenter[0],rectcenter[1]))

contours,hierarchy=cv2.findContours(img_rotation,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

return contours[0].ravel()

def test_revolvePixs(self,image=None):

pt1=(100,100)

pt2=(300,300)

e1 = cv2.getTickCount() # 您的代碼執行

print('get point=',self.circleRect((pt1,pt2),45))

e2 = cv2.getTickCount()

t = (e2 - e1) / cv2.getTickFrequency() * 1000

print("runTime=", t, "ms") # 2.1672447196501228 ms

#===========================================================

if __name__=="__main__":

import os

#girl=os.getcwd()+'\\data\\girl.jpg'

#gray=os.getcwd()+'\\data\\fastener1.jpg'

a=Geometry()

a.test_revolvePixs()

https://blog.csdn.net/u013948010/article/details/78605043

python+opencv圖片旋轉矩形分割 這邊博文沒看明白,希望你能看懂。歡迎交流。希望分享更好的方法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373885.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于string轉整數

又是leetcode的easy級別題,很基本的題目,卻漏考慮很多情況,動手前一定要考慮清楚呀!!! 就當做鍛煉寫作能力吧,先上題目! 將文本轉換成整數,注意一下幾點: 1.文…

數字三角形——遞歸、遞推、記憶化搜索

數字三角形 描述: 有一個由非負整數組成的三角形,第一行只有一個數,除了最下行之外每個數的左下方和右下方各有一個數。 問題: 從第一行的數開始,每次可以往左下或右下走一格,直到走到最下行…

Java 7功能概述

前面我們討論了所有未納入Java 7的內容,然后回顧了將其納入Java 7的有用的Fork / Join框架 。 今天的帖子將帶我們了解Project Coin的每個功能-一系列小的語言增強功能,這些功能雖然不是開創性的,但是對于任何能夠使用JDK 7的開發人員來說都是…

緩存技術

提升系統性能的主要方式之一就是緩存。它可以擋掉大部分的數據庫訪問的沖擊,如果沒有它,系統很可能會因為數據庫不可用導致整個系統崩潰。 但是緩存帶來了另外一些棘手的問題: 數據的一致性和實時性。 例如,數據庫中的數據狀態已經…

水晶報表分組分欄_web報表可視化設計器工具推薦

古往今來,信息就是決勝的關鍵。在科技時代的今天亦是如此。企業的數據管理在幫助企業加強管控、提高競爭力等方面具有不可或缺的作用。這就不得不說到報表工具。企業想要將儲存于各種商業信息系統中的數據轉化成有用的信息,最終幫助決策者做出更快、更好…

嵌套矩形——DAG上的動態規劃

有向無環圖(DAG,Directed Acyclic Graph)上的動態規劃是學習動態規劃的基礎。很多問題都可以轉化為DAG上的最長路、最短路或路徑計數問題。 題目描述: 有n個矩形,每個矩形可以用兩個整數a,b描述,表示它的長和寬。矩形…

Twisted

Twisted定義Twisted是一個基于事件驅動的網絡引擎框架網絡框架,別人預先定義好的一個框架(一個項目),如.net某個web框架有25個class,從BeginRequest依次執行類里的process方法,程序員自己定義一個類&#x…

從Spring到Java EE 6

我最近在一個非常復雜的項目中工作,其中融合了許多Java EE 6技術(例如JPA,JAXB,JMS,JTA,JAX-RS等)。 出于生產力和計劃方面的原因,將原型應用程序設計為獨立的純Spring應用程序。 當…

Centos 6.5 搭建php環境(nginx+mariadb+php7)

1.mariaDb vim /etc/yum.repos.d/MariaDB.repo [mariadb] name MariaDB baseurl http://yum.mariadb.org/5.5/centos5-x86 gpgkeyhttps://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck1#如果服務器已經安裝了MariaDB-Galera-server包,你可能需要在安裝MariaDB-s…

MAC itunes無法驗證服務器s.mzstatic/itunes無法更新服務器解決方案

打開host文件: 一、用終端打開: sudo vi /etc/hosts 輸入完這行命令后需要輸入電腦密碼,然后確認,進入host文件 然后按i鍵進入編輯模式,在最后一行添加:23.214.233.166 s.mzstatic.com 如下圖 添加完后&…

硬幣問題——固定終點的最長路和最短路

問題描述&#xff1a; 有n種硬幣&#xff0c;面值分別為V1,V2...,Vn,每種都有無限多。給定非負整數S&#xff0c;可以選用多少個硬幣&#xff0c;使得面值之和恰好為S&#xff1f;輸出硬幣數目的最小值和最大值。0 < n < 100, 0 < S < 10000, 1 < Vi < S。 …

讀取nas_NAS怎么玩?除了存放小姐姐,它竟然還有這些功能

自從有了電腦&#xff0c;就一直在折騰"存儲那點事兒"&#xff0c;說到底&#xff0c;電腦的本質就是存儲&#xff0c;而自己弄家用存儲方面的東西算下來也有幾年了。單機的硬盤存儲比較簡單&#xff0c;但是隨著家里各種設備的增多&#xff0c;各個設備間的文件共享…

ZK Web框架思想

我曾多次被要求提出一些有關ZK的意見。 因此&#xff0c;根據我作為ZK用戶4年的經驗&#xff0c;以下是一些想法&#xff1a; 總體開發人員經驗&#xff0c;社區和文檔 “就是這樣” ZK提供的大多數東西都能很好地工作&#xff0c;并且如果您以前開發過任何桌面Java應用程序&…

OC第一講:類和對象

今天終于開始進行OC的學習了 一.首先講了NSLog NSLog是oc里面的輸出語句&#xff0c;其用法和printf差不多&#xff0c;但是還是有差別的 1&#xff0c;NSLog是自動換行的&#xff0c;不用像printf那樣還需要加\n&#xff1b; 2&#xff0c;NSLog在引號面前需要添加符號&#x…

【轉載】關于 Google Chrome 中的全屏模式和 APP 模式

【來源于】新浪微博&#xff1a;阿博 http://www.cnblogs.com/abel/p/3235839.html 全屏模式&#xff1a;kiosk 默認全屏打開一個網頁呢&#xff0c;只需要在快捷方式中加上 --kiosk [url] 就可以了。 關于全屏模式&#xff1a; 1、全屏模式下&#xff0c;廣告插件&#xff08;…

PL/SQL Developer跑在Oracle 64位數據庫上初始化錯誤

安裝完Oracle(64位)、PL/SQL Developer后運行PL/SQL出現如下的錯誤&#xff1a; 網上查資料說&#xff0c;我的PL/SQL Developer與ORACLE不兼容&#xff0c;即PL/SQL不支持64位的ORACLE&#xff0c;因此得下一個32位的ORCALE客戶端并配置相應的參數&#xff1a; 解決步驟小記&a…

gis 聯合 融合_GIS技術進化 | 我們為何需要跨平臺GIS技術體系?

10月30日&#xff0c;超圖在2019 GIS 軟件技術大會上發布了SuperMap GIS 10i系列產品。SuperMap GIS 10i全面融入人工智能(AI)技術&#xff0c;創新并構建了GIS基礎軟件“BitCC”五大技術體系&#xff0c;即大數據GIS、人工智能GIS、新一代三維GIS、云原生GIS和跨平臺GIS&#…

Spring陷阱:代理

作為Spring框架的用戶和發燒友多年&#xff0c;我遇到了一些關于此堆棧的誤解和問題。 另外&#xff0c;在某些地方抽象非常可怕地泄漏&#xff0c;以便有效&#xff0c;安全地利用開發人員需要意識到的所有功能。 這就是為什么我開始Spring陷阱系列的原因。 在第一部分中&…

UVa11925 Generating Premutations

留坑(p.254) 1 #include<cstdio>2 #include<cstring>3 #include<cstdlib>4 #include<algorithm>5 #include<iostream>6 7 using namespace std;8 9 void setIO(const string& s) { 10 freopen((s ".in").c_str(), "r&qu…

xamarin UWP中MessageDialog與ContentDialog的區別

MessageDialog與ContentDialog的異同點解析&#xff1a; 相同點一&#xff1a;都是uwp應用上的一個彈窗控件。都能做為彈出應用。 相異點一&#xff1a;所在命名空間不同&#xff0c;MessageDialog在Windows.UI.Popups.MessageDialog下&#xff0c;而ContentDialog在Windows.UI…