几个OPENCV常用算法

1、常用算法寻找边界

std::vector<std::vector<cv::Point>> contours;
 
findContours( imgLast, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
        
cv::Mat imgMask( matBrokeRoi.size(), CV_8UC1, cv::Scalar(0) );
 
for ( unsigned int i=0; i < contours.size(); i++ )
{    
 
     double targetArea = contourArea(contours[i]);
     cv::Rect rect = cv::boundingRect(contours[i]);
     drawContours(imgMask, contours, (int)i, cv::Scalar::all(255), -1, 8);
}
2、点中寻找最小包围圆形

Point2f center;
float radius;
minEnclosingCircle(points, center, radius);
3.包含点的 最小矩形

rect = minAreaRect(InputArray points)
4.与四边平行的正矩形

Rect boundingRect(InputArray points)
5.自定义卷积

#include <opencv2/opencv.hpp>
int main ()
{    
    cv::Mat imgSrc,imgGrad;
    imgSrc=cv::imread("12.jpg");
 
    cv::Mat fkernel = cv::Mat(2, 1, CV_32FC1, cv::Scalar(0) );
 
    fkernel.at<float>(0,0) =  -1;
    fkernel.at<float>(1,0) = 1;
    //Filter_kernel_Vert.at<float>(2,0) =  1;
 
    cv::resize( imgSrc, imgSrc, cv::Size( imgSrc.cols / 2, imgSrc.rows / 2 ) );
    cv::filter2D( imgSrc, imgGrad, imgSrc.depth(), fkernel  );
    cv::imshow("temp2",imgGrad);
    cv::waitKey(0);
    return 0;
}
6、膨胀 与腐蚀

cv::Mat KerForCannyEro = cv::Mat(3, 9, CV_8UC1, cv::Scalar(1) );
cv::dilate( matCanny, matCannyDilate, KerForCannyEro );
cv::erode(  matCanny, matCannyDilate, KerForCannyEro )
7、翻转

cv::flip(imgSrc,imgOut,1);

 

转载于:https://www.cnblogs.com/lx17746071609/p/11010025.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值