python opencv投影變換增強

2021-10-06 12:40:31 字數 2730 閱讀 2723

邊緣填充:

image = cv2.copymakeborder(image, add_width, add_width, add_width, add_width, cv2.border_replicate, 0)
乙個是投影變換增強,乙個是旋轉增強

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

import cv2

import numpy as np

def rad(x):

return x * np.pi / 180

def rotate_3(img,angle_vari=30):

w, h = img.shape[0:2]

fov = 42

anglex = np.random.uniform(-angle_vari, angle_vari)

angley = np.random.uniform(-angle_vari, angle_vari)

anglez = np.random.uniform(-angle_vari+10, angle_vari-10)

# 鏡頭與影象間的距離,21為半可視角,算z的距離是為了保證在此可視角度下恰好顯示整幅影象

z = np.sqrt(w ** 2 + h ** 2) / 2 / np.tan(rad(fov / 2))

# 齊次變換矩陣

rx = np.array([[1, 0, 0, 0],

[0, np.cos(rad(anglex)), -np.sin(rad(anglex)), 0],

[0, -np.sin(rad(anglex)), np.cos(rad(anglex)), 0, ],

[0, 0, 0, 1]], np.float32)

ry = np.array([[np.cos(rad(angley)), 0, np.sin(rad(angley)), 0],

[0, 1, 0, 0],

[-np.sin(rad(angley)), 0, np.cos(rad(angley)), 0, ],

[0, 0, 0, 1]], np.float32)

rz = np.array([[np.cos(rad(anglez)), np.sin(rad(anglez)), 0, 0],

[-np.sin(rad(anglez)), np.cos(rad(anglez)), 0, 0],

[0, 0, 1, 0],

[0, 0, 0, 1]], np.float32)

r = rx.dot(ry).dot(rz)

# 四對點的生成

pcenter = np.array([h / 2, w / 2, 0, 0], np.float32)

p1 = np.array([0, 0, 0, 0], np.float32) - pcenter

p2 = np.array([w, 0, 0, 0], np.float32) - pcenter

p3 = np.array([0, h, 0, 0], np.float32) - pcenter

p4 = np.array([w, h, 0, 0], np.float32) - pcenter

dst1 = r.dot(p1)

dst2 = r.dot(p2)

dst3 = r.dot(p3)

dst4 = r.dot(p4)

list_dst = [dst1, dst2, dst3, dst4]

org = np.array([[0, 0],

[w, 0],

[0, h],

[w, h]], np.float32)

dst = np.zeros((4, 2), np.float32)

# 投影至成像平面

python opencv之 Hough圓變換

內容來自opencv python tutorials 自己翻譯整理 目標 使用霍夫變換在影象中尋找圓 使用函式cv2.houghcircles 原理 圓形的表示式為 x xcenter 2 y ycenter 2 r2 x xcenter 2 y ycenter 2 r2,乙個圓環的確定需要三個引...

arcgis for python 批量投影變換

接到的需求是對資料夾下包括子目錄所有影像進行投影變換,在網上找了找,大家的 好像和需求不太一致,自己寫了乙個小工具。思路是遍歷資料夾所有.tif檔案。1.用os.walk 函式來獲取路徑和檔名 2.用 if 語句限制讀取字尾為.tif的檔案 3.將檔案路徑和檔名組合起來 4.呼叫arcpy.proj...

python opencv 安裝整理

這兩天比較有空,在公司內想學習一下opencv,又不想安裝vc 所以就那個python看opencv。安裝環境本來很簡單 但是我python是64的 估計也很多 而opencv的安裝要有乙個numpy庫 這個在官網上只有32位的 所以,事情變得複雜起來。網上找了一下,只道有提供64位版的numpy庫...