私は次の機能を持っています
void DrawAndShowCircle(int windowWidth, int windowHeight,int windowType,Scalar windowBGColor, VirtualCircle circle)
{
cv::circle(circleImage,circle.Center,circle.Radius,circle.Color,circle.Thickness,circle.LineType);
}
void DrawAndShowCircles(int windowWidth, int windowHeight,int windowType,Scalar windowBGColor, vector<VirtualObject> circles)
{
circleImage = Mat(windowHeight,windowWidth,windowType);
circleImage.setTo(windowBGColor);
for(vector<VirtualObject>::iterator it = circles.begin(); it != circles.end(); ++it)
{
DrawAndShowCircle(windowWidth,windowHeight,windowType,windowBGColor,*it);
}
imshow("circle",circleImage);
cvWaitKey(0);
}
私が問題として抱えているのは、DrawAndShowCirclesで、forループを使用してオブジェクトをトラバースする時点で、型キャストを理解することに固執していることです。
VirtualObject
によって継承される基本クラス がありますVirtualCircle
ベクトルをトラバースして円を表示しようとしています。これはOpenCVに対して行われているため、いくつかのOpenCV関数があります。
これが呼び出しコードです
vector<VirtualObject> circles;
circles.push_back(VirtualCircle(Point(100,50),15,2,Scalar(255,100,100),1));
circles.push_back(VirtualCircle(Point(100,100),25,2,Scalar(100,255,100),1));
circles.push_back(VirtualCircle(Point(100,150),35,2,Scalar(100,100,255),1));
DrawAndShowCircles(200,200,CV_8UC3,Scalar(255,255,255),circles);
forループを使用してトラバースできません。型キャストは私にはわかりません。お知らせ下さい。