1

OpenCVライブラリを使用してMATLABコードをC++に変換しています。

OpenCVで同等のroipolymatlab関数を教えてもらえますか?

または、OpenCVを使用して同じ機能を取得する方法は?

BW = roipoly(I, c, r)

BW = roipoly(I、c、r)は、各頂点の列と行のインデックスをそれぞれ指定するベクトルcとrで記述されたポリゴンによって指定されたROIを返します。cとrは同じサイズです。

私の場合、画像から三角形の投資収益率を抽出したいので、cとrのサイズは3x1です。

OpenCVを使用してC++でこれを行う方法を誰かに教えてもらえますか?

4

1 に答える 1

3

OpenCVにはroipolyのような対応する組み込み関数はありません。

代わりに、OpenCVはcv2.polyline()やcv2.drawContours()のような関数を提供します。頂点の座標があれば(matlabに表示されているように)、それらを使用してnumpy配列を作成できます。次に、このポリゴンを黒い画像に描画します。これにより、roipolyによって返されるマスク画像が得られます。例を以下に示します。

import cv2
import numpy as np

img = cv2.imread('eight.png')
mask = np.zeros(img.shape[:2],dtype = 'uint8')

c = [194, 253, 293, 245]
r = [72, 14, 76, 125]

rc = np.array((c,r)).T

cv2.drawContours(mask,[rc],0,255,-1)
cv2.drawContours(img,[rc],0,255,2)
mask = cv2.cvtColor(mask,cv2.COLOR_GRAY2BGR)

res = np.hstack((img,mask))

以下は私が得た結果です:

ここに画像の説明を入力してください

于 2013-03-01T05:33:00.933 に答える