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

© 株式会社えむしーじじょう All Rights Reserved.