私は OpenCV に EmguCV ラッパーを使用しており、この形状を修正しています。
このコードの助けを借りて:
public Image<Bgr,byte> Rectify()
{
try
{
Image<Bgr, byte> warped_Image = new Image<Bgr, byte>(input_Image.Width, input_Image.Height);
MCvScalar s = new MCvScalar(0, 0, 0);
PointF[] dsts = new PointF[4];
dsts[0] = new PointF(0, 0);
dsts[2] = new PointF(0, input_Image.Height);
dsts[3] = new PointF(input_Image.Width, input_Image.Height);
dsts[1] = new PointF(input_Image.Width, 0);
HomographyMatrix mywarpmat = CameraCalibration.GetPerspectiveTransform(pnts, dsts);
Image<Bgr, byte> warped_Image2 = warped_Image.WarpPerspective(mywarpmat, Emgu.CV.CvEnum.INTER.CV_INTER_NN, Emgu.CV.CvEnum.WARP.CV_WARP_FILL_OUTLIERS, new Bgr(0, 0, 0));
CvInvoke.cvWarpPerspective(input_Image, warped_Image2, mywarpmat, (int)Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR, s);
Image<Bgr, byte> fixedImg = new Image<Bgr, byte>((int)warped_Image2.Width, (int)(warped_Image2.Width / aspectRatio));
CvInvoke.cvResize(warped_Image2.Ptr, fixedImg.Ptr, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
return fixedImg;
}
私はこの結果(修正された形状)を取得します:
角が両方の画像(修正前と修正後)の座標であることはわかっています。修正する前に、形状の内側にある上部の白い線の座標を知っていました。修正後にこの白い線の座標を取得するにはどうすればよいですか?
前もって感謝します!