获取最大轮廓 opencv

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取车牌轮廓的步骤如下: 1. 读取车牌图像 ```c++ Mat img = imread("car_plate.jpg"); ``` 2. 灰度化 ```c++ Mat gray_img; cvtColor(img, gray_img, COLOR_BGR2GRAY); ``` 3. 高斯模糊 ```c++ Mat blur_img; GaussianBlur(gray_img, blur_img, Size(3, 3), 0); ``` 4. 边缘检测 ```c++ Mat edges; Canny(blur_img, edges, 80, 160); ``` 5. 轮廓检测 ```c++ vector<vector<Point>> contours; vector<Vec4i> hierarchy; findContours(edges, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE); ``` 6. 遍历轮廓,找到最大的矩形轮廓 ```c++ double max_area = 0; Rect max_rect; for (int i = 0; i < contours.size(); i++) { double area = contourArea(contours[i]); if (area > max_area) { max_area = area; max_rect = boundingRect(contours[i]); } } ``` 最终,`max_rect` 就是车牌的轮廓矩形。可以通过以下代码将其绘制在原图上: ```c++ rectangle(img, max_rect, Scalar(0, 0, 255), 2); imshow("car plate", img); waitKey(0); ``` 完整代码如下: ```c++ #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main() { Mat img = imread("car_plate.jpg"); Mat gray_img; cvtColor(img, gray_img, COLOR_BGR2GRAY); Mat blur_img; GaussianBlur(gray_img, blur_img, Size(3, 3), 0); Mat edges; Canny(blur_img, edges, 80, 160); vector<vector<Point>> contours; vector<Vec4i> hierarchy; findContours(edges, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE); double max_area = 0; Rect max_rect; for (int i = 0; i < contours.size(); i++) { double area = contourArea(contours[i]); if (area > max_area) { max_area = area; max_rect = boundingRect(contours[i]); } } rectangle(img, max_rect, Scalar(0, 0, 255), 2); imshow("car plate", img); waitKey(0); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值