上次完成《基於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傳送使用...