首页 > 其他 > 详细

opencv——掩码运算实现裁剪图像

时间:2021-05-12 20:33:46      阅读:23      评论:0      收藏:0      [点我收藏+]

引言

在学习opencv的掩码运算后,尝试实现一个halcon的reduce_domain功能,使用掩码进行运算时,位运算符bitewise_and()、bitewise_or()、bitewise_xor()和bitewise_not()很有用!??

首先介绍一下,位运算符:

void bitwise_and(InputArray src1, InputArray src2, OutputArray dst);  //dst = src1 & src2  “与”操作
void bitwise_or(InputArray src1, InputArray src2, OutputArray dst);  //dst = src1 | src2   “或”操作   
void bitwise_xor(InputArray src1, InputArray src2, OutputArray dst);   //dst = src1 ^ src2 “异或”操作
void bitwise_not(InputArray src, OutputArray dst);  //dst = ~src                           “非”操作

掩码运算实现裁剪图像实例:

int main(int argc, char** argv)
{        
    Mat src,dst;
    src = imread("D:/opencv练习图片/薛之谦.jpg");    
    cvtColor(src, src, COLOR_RGB2GRAY);
    imshow("Image", src);
    //创建掩码图像
    Mat mask(src.rows, src.cols, CV_8UC1, Scalar(0, 0, 0));
    circle(mask, Point(src.cols / 2, src.rows / 2), 90, 255, -1);
    //执行and运算
    Mat ROI;
    bitwise_and(src, mask, ROI);    //“与”操作
    //用白色填充外部
    const uchar white = 255;
    for (int i = 0; i < ROI.rows; i++)
    {
        for (int j = 0; j < ROI.cols; j++)
        {
            if (!mask.at<uchar>(i, j))
            {
                ROI.at<uchar>(i, j) = white;
            }
        }
    }
    imshow("roi区域", ROI);
    waitKey(0);
    return 0;
}

技术分享图片技术分享图片

注:该程序仅限于灰度图像的roi提取

 

opencv——掩码运算实现裁剪图像

原文:https://www.cnblogs.com/xyf327/p/14761218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!