当前位置: 首页 > news >正文

opencv05-掩膜

参考:
https://blog.csdn.net/shuiyixin/article/details/88825549

#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <array>
#include <algorithm>using namespace std;
using namespace cv;int main() {string filename1 = R"(D:\workspace\cpp_workspace\my-cv\data\img\1.png)";string filename2 = R"(D:\workspace\cpp_workspace\my-cv\data\img\2.png)";Mat src, dst, mask;src = imread(filename1);imshow("image", src);//1. 获取图像的像素指针// Mat.ptr<uchar>(int i=0) //获取像素矩阵的指针,索引i表示第几行,从0开始计行数。const uchar *curr = src.ptr<uchar>(0); //获得第一行指针cout << curr[1] << endl; // p(row, col) =current[col]  //获取当前像素点P(row, col)的像素值。cout << saturate_cast<uchar>(-10) << endl; //返回 0cout << saturate_cast<uchar>(288) << endl; //返回255cout << saturate_cast<uchar>(100) << endl;//返回100int cols = (src.cols - 1) * src.channels();int offsetx = src.channels();int rows = src.rows;dst = Mat::zeros(src.size(), src.type());for (int row = 1; row < (rows - 1); row++) {const uchar *previous = src.ptr<uchar>(row - 1);const uchar *current = src.ptr<uchar>(row);const uchar *next = src.ptr<uchar>(row + 1);uchar *output = dst.ptr<uchar>(row);for (int col = offsetx; col < cols; col++) {// saturate_cast<uchar> 这个函数的功能是确保RGB值得范围在0~255之间output[col] = saturate_cast<uchar>(5 * current[col] - (current[col - offsetx] + current[col + offsetx] + previous[col] + next[col]));}}imshow("dst", dst);waitKey();return 0;
}

使用filter2D来实现:


int main() {string filename1 = R"(D:\workspace\cpp_workspace\my-cv\data\img\1.png)";string filename2 = R"(D:\workspace\cpp_workspace\my-cv\data\img\2.png)";Mat src, dst, mask;src = imread(filename1);/** void filter2D(InputArray src,OutputArray dst,int ddepth,InputArray kernel,Point anchor = Point(-1,-1),double delta = 0,int borderType = BORDER_DEFAULT);(1).InputArray类型的src ,输入图像。(2).OutputArray类型的dst ,输出图像,图像的大小、通道数和输入图像相同。(3).int类型的ddepth,目标图像的所需深度。(4).InputArray类型的kernel,卷积核(或者更确切地说是相关核).是一种单通道浮点矩阵;如果要将不同的核应用于不同的通道,请使用split将图像分割成不同的颜色平面,并分别对其进行处理。。(5).Point类型的anchor,表示锚点(即被平滑的那个点).,注意他有默认值Point(-1,-1)。如果这个点坐标是负值的话,就表示取核的中心为锚点,所以默认值Point(-1,-1)表示这个锚点在核的中心。。(6).double类型的delta,在将筛选的像素存储到dst中之前添加到这些像素的可选值。说的有点专业了其实就是给所选的像素值添加一个值delta。(7).int类型的borderType,用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT。*/Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);cv::filter2D(src, dst, src.depth(), kernel);imshow("input image", src);imshow("contrast image demo", dst);waitKey();return 0;
}
http://www.lryc.cn/news/105207.html

相关文章:

  • 通讯软件013——分分钟学会Kepware OPC AE Server仿真配置
  • Windows下安装Hive(包安装成功)
  • count(列名) ,count(1)与count(*) 有何区别?
  • node.js判断元素是否包括
  • 基于SpringBoot+Vue的地方废物回收机构管理系统设计与实现(源码+LW+部署文档等)
  • 【SAP MII学习】Day01--Overview, Security Services, and Workbench
  • 枚举类常见用法,A Guide to Java Enums
  • Vue Baidu Map--vue引入百度地图
  • 使用Express部署Vue项目
  • 344.翻转字符串+387.字符串中的第一个唯一字符
  • 安装mmcv
  • 什么是服务网格?
  • 8.1作业
  • linux-安全技术
  • 如何在免费版 pycharm 中使用 github copilot (chatGPT)?
  • SSD202D-UBOOT-FDT-获取DTB
  • 【Maven】Setting文件分享
  • 使用requestAnimationFrame 实现倒计时功能js(简单秒数倒计时)
  • jenkins通过sshPut传输文件的时候,报错Permission denied的SftpException
  • 【Python】数据分析+数据挖掘——探索Pandas中的数据筛选
  • [数据集][目标检测]天牛数据集目标检测数据集VOC格式3050张
  • python_day16_设计模式
  • uniapp开发小程序-实现中间凸起的 tabbar
  • Vue引入与Vue拦截原理
  • 2023年电赛---运动目标控制与自动追踪系统(E题)OpenMV方案
  • 6G内存运行Llama2-Chinese-7B-chat模型
  • 项目经理必备-项目总体计划模板-制式文件,可直接填写使用-公司可用
  • 正则表达式系列|(以xx开头xx结尾提取、切分、替换)
  • 金融学复习博迪(第1-5章)
  • 【前端知识】React 基础巩固(三十七)——自定义connect高阶组件