double thresh = Cv2.Threshold(roiMat, new Mat(), 0, 255, ThresholdTypes.Binary | (isJudgeByGreatThan ? ThresholdTypes.Otsu : ThresholdTypes.OtsuInv));中opencvsharp4.6中没有 ThresholdTypes.OtsuInv这个方法请用其它方法实现,编写新代码
时间: 2024-04-28 11:23:34 浏览: 156
Otsu双阈值分割(opencv)
4星 · 用户满意度95%
好的,如果你想使用类似于OtsuInv的阈值类型,你可以考虑使用反相图像来实现。具体来说,可以先使用Otsu方法计算出一个阈值,然后将图像进行反相处理,再利用这个阈值进行二值化,这样就相当于使用了OtsuInv的阈值类型。下面是一个简单的示例代码:
```csharp
Mat grayImage = new Mat();
Cv2.CvtColor(srcImage, grayImage, ColorConversionCodes.BGR2GRAY);
Mat binaryImage = new Mat();
double otsuThreshold = Cv2.Threshold(grayImage, binaryImage, 0, 255, ThresholdTypes.Binary | ThresholdTypes.Otsu);
Cv2.BitwiseNot(grayImage, grayImage);
Cv2.Threshold(grayImage, binaryImage, otsuThreshold, 255, ThresholdTypes.Binary);
// binaryImage即为处理后的二值图像
```
在这段代码中,首先将原始图像转换为灰度图像,然后使用Otsu方法计算出一个阈值,并将图像进行反相处理。最后再利用这个阈值进行二值化,得到处理后的二值图像。
阅读全文