基於exif資訊進行座標旋轉 翻轉修正

2021-09-27 07:14:21 字數 4005 閱讀 6393

上次完成《基於exif資訊進行方向旋轉修正》後,出現了乙個新的問題: 第一次標註了例項的外邊框,第二次標註了例項的文字區域,合併後前後兩次標註的座標點無法與匹配吻合。

從exif資訊中讀取旋轉角度

:param image:

:return:

"""try:

exif = image._getexif(

)except attributeerror:

exif =

none

if exif is

none

:return

none

,none

exif =

orientation = exif.get(

'orientation'

,none

)# return orientation

if orientation ==1:

# do nothing

return

none

,none

elif orientation ==2:

# left-to-right mirror

return

'mirror'

,none

elif orientation ==3:

# rotate 180

return

none

,180

elif orientation ==4:

# top-to-bottom mirror

return

'flip'

,none

elif orientation ==5:

# top-to-left mirror

return

'mirror',-

90elif orientation ==6:

# rotate 270

return

none,-

90elif orientation ==7:

# top-to-right mirror

return

'mirror',90

elif orientation ==8:

# rotate 90

return

none,90

else

:return image

defflip_point

(h, points)

:"""

點上下翻轉

:param h: int, eg 10

:param point: ndarray, [ [1, 2] [1, 8 ] ]

:return:[ [1, 8] [1, 2 ] ]

"""points[:,

0:1]

= h-points[:,

0:1]

return points

defmirror_point

(w, points)

:"""

點左右翻轉

:param w: int, eg. 10

:param point:ndarray, eg. array([[1, 2], [7, 4]])

:return:ndarray,eg array([[9, 2], [3, 4]])

"""points[:,

1:2]

= w-points[:,

0:1]

return points

defrotation_point

(h, w, angle, point)

:"""

座標點旋轉

:param h: 高度

:param w: 寬度

:param angle: 旋轉角度

:param point: 座標點 eg. ndarray([[1,2],[2,3]])

:return: point: 座標點 eg. ndarray([[1,2],[2,3]])

)以上是座標旋轉,我進行了旋轉修正,請參考《基於exif資訊進行方向旋轉修正》,最終效果如下:

完成!

用C 讀取數碼相片的EXIF資訊(一)

現在的數位相機拍攝出來的 表面上看都是很普通的jpeg的,但通常還包含著諸如相片拍攝時使用的相機生產商 型號 光圈值 快門速度等各類附加資訊,這就是所謂的exif資訊。exif是一種影象檔案格式,只是檔案的字尾名還是沿用大家熟悉的jpg而已。掌握exif資訊對學習提高攝影技術很有幫助。c net作為...

用C 讀取數碼相片的EXIF資訊(一)

現在的數位相機拍攝出來的 表面上看都是很普通的jpeg的,但通常還包含著諸如相片拍攝時使用的相機生產商 型號 光圈值 快門速度等各類附加資訊,這就是所謂的exif資訊。exif是一種影象檔案格式,只是檔案的字尾名還是沿用大家熟悉的jpg而已。掌握exif資訊對學習提高攝影技術很有幫助。c net作為...

基於restframework進行token驗證

一般情況下,進入到web 主頁都需要進行token或者其它驗證,不能在沒有登入的情況下可以檢視主頁的內容,在使用者輸入使用者名稱密碼後,進行校驗成功,後台會返回乙個token,用於用於下次訪問主頁或其它頁面進行使用者認證,一旦認證成功就可以訪問了。1 使用者獲取token 使用者向後台api傳送使用...