我正在從影像中解碼 QR 碼,因為影像很大并且有其他不需要的圖形,所以我在代碼周圍繪制了一個 roi 并對其進行解碼。一切正常,但是當我嘗試在 QR 碼周圍繪制邊界框時,它被繪制在其他地方。如何在主影像的同一區域對齊矩形?
這就是我得到的 - 紅色矩形是 roi,綠色矩形是邊界框。

這是代碼:
Image<Gray, byte> Gray_Image = My_Image.Convert<Gray, byte>();
Gray_Image.ROI = Coderect;
Gray_Image._Not();
CvInvoke.cvThreshold(Gray_Image,Gray_Image,50,255.0,Emgu.CV.CvEnum.THRESH.CV_THRESH_BINARY);
Gray_Image.Dilate(5);
StructuringElementEx element = new StructuringElementEx(3, 3, 1, 1, Emgu.CV.CvEnum.CV_ELEMENT_SHAPE.CV_SHAPE_RECT);
CvInvoke.cvMorphologyEx(Gray_Image, Gray_Image, IntPtr.Zero, element, Emgu.CV.CvEnum.CV_MORPH_OP.CV_MOP_CLOSE, 18);
var contour = Gray_Image.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_EXTERNAL);
CvInvoke.cvRectangle(My_Image, new Point(contour.BoundingRectangle.X, contour.BoundingRectangle.Y), new Point(contour.BoundingRectangle.X contour.BoundingRectangle.Width, contour.BoundingRectangle.Y contour.BoundingRectangle.Height), new MCvScalar(0, 255, 0), 4, Emgu.CV.CvEnum.LINE_TYPE.EIGHT_CONNECTED, 0);
pictureBox1.Image = My_Image.Bitmap;
uj5u.com熱心網友回復:
我找到了解決方案。因為我知道 roi 的 (roiX,roiY) 并且我也知道邊界框的 (bbX,bbY,bbW,bbH)。通過添加 roi 的 X 和邊界框的 X,我得到了位置的 X,與 Y 類似。
我只需要執行以下操作:
cvInvoke.cvRectangle(My_Image, new Point(roiX bbX, roiY bbY), new Point((roiX bbX) bbW,(roiY bbY) bbH), new McvScalar(0,255,0), Line_Type.Eight_Connected,0);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425470.html
