Opencv边缘检测之-----copyTo(roi,mask)和遇到的一些问题

程序
#include “stdafx.h”

//本节讲述 图像处理之 canny边缘检测相关知识;
#include <opencv2/opencv.hpp>
#include
#include <math.h>

using namespace std;
using namespace cv;

Mat src, dst, dst1, dst2, dst3, dst4, dst6, dst5, gray_src;
const char*output_title = “canny双阈值处理”;
char input_title[] = “原图”;

int main(int argc, char**argv)
{
src = imread(“C:/Users/Rubison.DELL/Desktop\杂物/壁纸/荔枝.jpg”); //存放自己图像的路径
dst = imread(“C:/Users/Rubison.DELL/Desktop\杂物/壁纸/小白2.jpg”); //存放自己图像的路径
if (!src.data)
{
printf(“could not load image…\r\n”);
return -1;
}

namedWindow(input_title, CV_WINDOW_AUTOSIZE);
imshow(input_title, src);
//imshow("图2", dst);

cvtColor(dst,gray_src,CV_BGR2GRAY);
//cvtColor(src, src, CV_BGR2GRAY);
threshold(gray_src, gray_src,127,255,THRESH_TOZERO);
imshow("灰度", gray_src);

Mat roi = src(Rect(0, 0, dst.cols, dst.rows));   //画矩形!!Rect(x,y,width,height),x, y 为左上角坐标, width, height 则为长和宽。
imshow("检测roi111", roi);
//imshow("结果2", src);
Mat mask(roi.rows, roi.cols, roi.depth(), Scalar(1));  //全黑的图片 当()中为0时,不显示重叠图中对应的roi部分 只看第一通道
//imshow("检测mask", mask);
gray_src.copyTo(roi, gray_src);
//imshow("检测dst", dst);
//imshow("检测roi222", roi);
imshow("结果", src);     //经过dst.copyTo,为什么src改变了呢? 原因1:roi和src共用一个内存

//src.copyTo(dst);
//imshow("简单Copy",src);

waitKey(0);
destroyAllWindows();
return 0;

}

运行结果
在这里插入图片描述
在这里插入图片描述
补充
图一结果:是简单的进行copyTo函数提取感兴趣区域,但是遇到一些问题:
1.为什么dst.copyTo(roi, gray_src);后,输出src图就变成叠加?<因为roi是用Rect()函数在src上生成的,他只是显示src局部的一部分图,且与src共用一个内存,copyTo等函数处理了roi后,显示src就可以看到整体效果>
2.如果将小白图转灰度,处理后叠加在src上,不显示叠加?只有同时将src也转换为灰度图才能叠加。
<将单通道图加在彩色图上,好像没变化,为什么呢?按道理单通道像素叠加也会改变像素值,彩色图多少也会有变换呀?有待解答,希望看到的朋友帮忙解答下>

知识点:
1.A.copyTo(roi,mask)处理时,当mask中像素为0时,不显示A图片中的像素,否则将A图片对应点像素叠加在roi上。
2.补充:A.copyTo(B):将A拷贝到B区域
3.补充参考链接-关于CopyTo函数需要注意的点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w5875895

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值