用 OpenCvSharp4.6 实现的代码 Extract1DEdge::Extract1DEdge() { m_pdCenter = Point2d(0, 0); m_dAngle = 0; m_dK = 0; m_dB = 0; m_dLength = 0; m_dHeight = 0; m_dSigma = 0; m_nThreshold = 0; }
时间: 2024-02-14 10:10:18 浏览: 22
以下是使用 OpenCvSharp4.6 实现的代码:
```csharp
public Extract1DEdge()
{
m_pdCenter = new Point2d(0, 0);
m_dAngle = 0;
m_dK = 0;
m_dB = 0;
m_dLength = 0;
m_dHeight = 0;
m_dSigma = 0;
m_nThreshold = 0;
}
```
请注意,这只是一个参考实现,可能需要根据实际情况进行修改。同时,这段代码中的一些变量和函数定义可能需要根据原代码进行调整。
相关问题
用opencvsharp4.6 实现以下函数 vector<Edge1D_Result> Extract1DEdge::Get1DEdge(Mat inputMat, Point2d pdCenter, double dMeasureLength, double dMeasureHeight, double dMeasureAngle,double sigma, int threshold, Translation traslation, Selection selection) { if (inputMat.empty()) { return vector<Edge1D_Result>(); } if (inputMat.channels() > 1) { cvtColor(inputMat, inputMat, COLOR_BGR2GRAY); } m_vEdgesResult.clear(); inputMat.copyTo(m_mInputMat); m_pdCenter = pdCenter; m_dLength = dMeasureLength; m_dHeight = dMeasureHeight; m_dAngle = dMeasureAngle; m_dSigma = sigma; m_nThreshold = threshold * (m_dSigma * sqrt(2 * PI)); GetEndPointsOfLine(pdCenter, dMeasureAngle, dMeasureLength, m_pdStart, m_pdEnd); m_dK = GetLineSlope(m_pdStart, m_pdEnd); m_dB = m_pdStart.y - m_dK * m_pdStart.x; GetProfieMat(); FilterMat(); GetGradientMat(); GetEdgePoint(threshold, traslation, selection); return m_vEdgesResult; }
以下是使用 OpenCvSharp4.6 实现的代码:
```csharp
public List<Edge1D_Result> Get1DEdge(Mat inputMat, Point2d pdCenter, double dMeasureLength, double dMeasureHeight, double dMeasureAngle, double sigma, int threshold, Translation traslation, Selection selection)
{
if (inputMat.Empty())
{
return new List<Edge1D_Result>();
}
if (inputMat.Channels() > 1)
{
Cv2.CvtColor(inputMat, inputMat, ColorConversionCodes.BGR2GRAY);
}
m_vEdgesResult.Clear();
inputMat.CopyTo(m_mInputMat);
m_pdCenter = pdCenter;
m_dLength = dMeasureLength;
m_dHeight = dMeasureHeight;
m_dAngle = dMeasureAngle;
m_dSigma = sigma;
m_nThreshold = (int)(threshold * (m_dSigma * Math.Sqrt(2 * Math.PI)));
GetEndPointsOfLine(pdCenter, dMeasureAngle, dMeasureLength, m_pdStart, m_pdEnd);
m_dK = GetLineSlope(m_pdStart, m_pdEnd);
m_dB = m_pdStart.Y - m_dK * m_pdStart.X;
GetProfieMat();
FilterMat();
GetGradientMat();
GetEdgePoint(threshold, traslation, selection);
return m_vEdgesResult;
}
```
请注意,这只是一个参考实现,可能需要根据实际情况进行修改。同时,这段代码中的一些变量和函数定义可能需要根据原代码进行调整。
OpenCvSharp 4.6实现 ThresholdTypes.Truz
ThresholdTypes.Truz 实际上是一个拼写错误,正确的拼写应该是 ThresholdTypes.Trunc。这个枚举值表示阈值类型为截断(Truncate)。在 OpenCvSharp 4.6 中,可以通过调用 Mat.Threshold 方法来实现该阈值类型,示例代码如下:
```csharp
using OpenCvSharp;
Mat src = Cv2.ImRead("image.jpg", ImreadModes.GrayScale);
Mat dst = new Mat();
Cv2.Threshold(src, dst, 128, 255, ThresholdTypes.Trunc);
Cv2.ImWrite("result.jpg", dst);
```
在上面的代码中,首先使用 ImRead 方法读取一张灰度图像,然后调用 Threshold 方法实现阈值化操作,并将结果保存到 dst 变量中,最后使用 ImWrite 方法将结果保存到文件中。其中,第一个参数表示输入图像,第二个参数表示输出图像,第三个参数表示阈值,第四个参数表示最大像素值,第五个参数表示阈值类型,这里设置为 ThresholdTypes.Trunc。