微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
免费领学习资料+微信:OpenCVXueTang_Asst
OpenCV C#版本安装
OpenCV官方的开发包至今还不支持C#语言SDK,但是C#有个著名的开源OpenCV Wapper库支持- opencvsharp,github地址如下:
https://github.com/shimat/opencvsharp
从VS2022中直接安装,截图如下:
代码测试
安装好OpenCVCSharp开发包支持以后,直接创建一个C#语言的控制台空项目,然后创建一个cs文件,把下面的代码直接贴进去
using OpenCvSharp;
class Program
{
static void Main()
{
using var src = new Mat("D:/lena.png", ImreadModes.Grayscale);
using var dst = new Mat();
Cv2.Canny(src, dst, 50, 200);
using (new Window("src image", src))
using (new Window("dst image", dst))
{
Cv2.WaitKey();
}
}
}
轮廓分析代码演示
OpenCVCsharp分析轮廓结果
关键源代码如下:
Point[][] contours;
HierarchyIndex[] hierarchy;
Cv2.FindContours(binaryImg, out contours, out hierarchy, RetrievalModes.Tree, ContourApproximationModes.ApproxSimple);
//Cv2.DrawContours(outputImg, contours, -1, new Scalar(0, 0, 255), 2);
for (int i = 0; i < contours.Length; i++)
{
double area = Cv2.ContourArea(contours[i]);
double zc = Cv2.ArcLength(contours[i], true);
Rect box = Cv2.BoundingRect(contours[i]);
RotatedRect rrt = Cv2.MinAreaRect(contours[i]);
Point2f center = rrt.Center;
Point2f[] pts = rrt.Points();
System.Console.WriteLine("pts : " + pts.Length);
Cv2.Rectangle(outputImg, box, new Scalar(0, 255, 0), 2);
Cv2.Circle(outputImg, new Point(center.X, center.Y), 3, new Scalar(255, 0, 255), 2);
for (int t = 0; t < pts.Length; t++)
{
Cv2.Line(outputImg, (Point)pts[t], (Point)pts[(t + 1) % 4], new Scalar(0, 0, 255), 2);
}
}
从此以后我又解锁了OpenCVCSharp了,学习OpenCV一定记得关注【OpenCV学堂】一定可以找到我!
OpenCV4系统化学习
推荐阅读
OpenCV4.8+YOLOv8对象检测C++推理演示
ZXING+OpenCV打造开源条码检测应用
攻略 | 学习深度学习只需要三个月的好方法
三行代码实现 TensorRT8.6 C++ 深度学习模型部署
实战 | YOLOv8+OpenCV 实现DM码定位检测与解析
对象检测边界框损失 – 从IOU到ProbIOU
初学者必看 | 学习深度学习的五个误区