OpenCV関連
任意の列で昇順又は降順の並び替え
import numpy as np
#例
x = np.array([[ 1, -3],
[ 9, 3],
[ 7, -6],
[ 1, -5],
[ 4, 8]])
i = 0
j = 1
#i列目で昇順ソート
asc_x = x[np.argsort(x[:,i])]
#j列目で降順ソート
des_x = x[np.argsort(x[:,j])][::-1]
#例 出力
print("0列目で昇順ソート\nasc_x=\n",asc_x)
print("1列目で降順ソート\ndes_x=\n",des_x)
出力結果
0列目で昇順ソート
asc_x=
[[ 1 -3]
[ 1 -5]
[ 4 8]
[ 7 -6]
[ 9 3]]
1列目で降順ソート
des_x=
[[ 4 8]
[ 9 3]
[ 1 -3]
[ 1 -5]
[ 7 -6]]
参考文献 NumPy>numpy.argsort
文字の描画
import cv2
# img : 画像データ
# text : 文字
# (x ,y) : int 横の位置(左端基準), int 縦の位置(上端基準)
# fontFace : 書体
# fontScale : float 文字サイズ
# color : RGB or RGBA 各値0~255 (cv2.cvtColor(img, cv2.COLOR_RGBA2BGRを使用する場合))
# リストはint,float可
# np.arrayはint不可,float可
# thickness : int 線の太さ
# lineType : 線の種別 cv.FILLED, cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA
# bottomLeftOrigin : Trueだと文字が上下逆さまになりました
img = cv2.putText(img, text, (left, top), fontFace, fontScale, color, thickness = 1, lineType =cv2.LINE_8 , bottomLeftOrigin=False)
サンプル
import cv2
import numpy as np
img = np.full((100,100,3),255,dtype=np.uint8)
#main
img = cv2.putText(img, "sample", (10, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.5, [0,0,0], thickness = 1, lineType =cv2.LINE_AA)
img = cv2.cvtColor(img, cv2.COLOR_RGBA2BGR)
cv2.imwrite("sample.png",img)
出力結果
参考文献
OpenCV>Drawing Functions> putText OpenCV>Drawing Functions> fontFace OpenCV>Drawing Functions> lineType
折れ線の描画
import cv2
# img : 画像データ
# pts : int 折れ線配列(3次元配列)
# 折れ線i - 点j - 座標k
# i = 0,1,...
# j = 0,1,...
# k = 0,1 (x座標が0番目, y座標が1番目)
# isClosed : bool 折れ線が閉じるかどうか
# color : RGB or RGBA 各値0~255 (cv2.cvtColor(img, cv2.COLOR_RGBA2BGRを使用する場合))
# リストはint,float可
# np.arrayはint不可,float可
# thickness : int 折れ線の太さ(デフォルト=1)
# lineType : 線の種別 cv.FILLED, cv2.LINE_4, cv2.LINE_8, cv2.LINE_AA
# デフォルト = cv2.LINE_8
img = cv2.polylines(img, pts, isClosed, color, thickness, lineType)
サンプル
import numpy as np
import cv2
img = np.full((200,300,3),255,dtype=np.uint8)
pts = np.array( [[10,10],[60,100],[10,190]], dtype=np.int32)
# main
img = cv2.polylines(img,[pts], False, [ 0, 0,255], 1, lineType=cv2.LINE_AA)
cimg = cv2.cvtColor(img, cv2.COLOR_RGBA2BGR)
cv2.imwrite("sample1.png",cimg)
pts1 = np.array( [[ 80, 20],[180,100],[ 80,180]], dtype=np.int32)
pts2 = np.array( [[200, 50],[270, 50],[270,150],[200,150]], dtype=np.int32)
# main
img = cv2.polylines(img,[pts1,pts2], True, [ 0,128, 0], 1, lineType=cv2.LINE_AA)
cimg = cv2.cvtColor(img, cv2.COLOR_RGBA2BGR)
cv2.imwrite("sample2.png",cimg)
出力結果
sample1.png
sample2.png
参考文献
opencv> 描画函数 > cv::polylines