OpenCV関連
任意の列で昇順又は降順の並び替え
import numpy as np#例x = np.array([[ 1, -3], [ 9, 3], [ 7, -6], [ 1, -5], [ 4, 8]])i = 0j = 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 cv2import numpy as npimg = np.full((100,100,3),255,dtype=np.uint8)#mainimg = 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_8img = cv2.polylines(img, pts, isClosed, color, thickness, lineType)
サンプル
import numpy as npimport cv2img = np.full((200,300,3),255,dtype=np.uint8)pts = np.array( [[10,10],[60,100],[10,190]], dtype=np.int32)# mainimg = 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)# mainimg = 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