首页 > 其他分享 >OpenCV(图像NaN处理)

OpenCV(图像NaN处理)

时间:2024-09-02 15:36:35浏览次数:12  
标签:src Mat mask nan NaN OpenCV 图像 cv

目录



1. 目的

src 矩阵中的某些区域(由 mask 指定的非零区域)设置为 NaN

SetToNan 函数实现了这一功能。



2. 示例

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

void SetToNan(cv::Mat& src, const cv::Mat& mask);

int main(void)
{
	Mat A = Mat::ones(500, 500, CV_32FC1);
	Mat mask = Mat::zeros(500, 500, CV_8UC1);
	circle(mask, Point2i(250, 250), 100, 255, -1);
	Mat A2 = A.clone();
	SetToNan(A2, mask);

	system("pause");
	return 0;
}

void SetToNan(cv::Mat& src, const cv::Mat& mask)
{
	CV_Assert(src.type() == CV_32FC1);  // 32FC是float型
	cv::Mat _nan(src.size(), src.type(), nan(""));
	_nan.setTo(0, mask);  // 将掩码 mask 中非零(即值为255)的区域对应的 _nan 矩阵中的元素设置为0。
	// nan加任何值都为nan
	src = src + _nan;
}

A2 矩阵中,非掩码区域将保持为1(原始值),而在掩码指定的圆形区域内,所有值将变为 NaN

  • 使用 cv::Mat::setTo() 函数和掩码机制,将部分矩阵元素替换为特定的数值(0或NaN),然后通过矩阵相加的方式将原矩阵的部分元素设为NaN

来自:https://zhaitianbao.blog.csdn.net/article/details/116145717



标签:src,Mat,mask,nan,NaN,OpenCV,图像,cv
From: https://www.cnblogs.com/keye/p/18392810

相关文章

  • 第107期 天空图像分割数据集
    引言亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。一、重要性及意义天空图像分割的研究意义和重要性主要体现在以下几个方面:目标检测......
  • OpenCV绘图函数(14)图像上绘制文字的函数putText()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述在图像上绘制指定的文本字符串。cv::putText函数在图像上绘制指定的文本字符串。无法使用指定字体渲染的符号会被问号(?)替换。关于文本渲染的具体示例可以参考getTextSize函数......
  • OpenCV绘图函数(15)图像上绘制矩形函数 rectangle()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述绘制一个简单的、粗的或填充的直立矩形。这个函数cv::rectangle绘制一个矩形轮廓或一个填充的矩形,其两个相对的顶点分别是pt1和pt2。函数原型1voidcv::rectangle( Inpu......
  • CMake构建学习笔记13-opencv库的构建
    OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和机器学习软件库,旨在提供一个跨平台的、易于使用的、快速执行的计算机视觉接口。如果只是简单的使用,其实不必要像笔者这样使用源代码进行构建,直接使用官方提供的二进制安装包即可。一般来说,需要从源代码进行构建......
  • 论文代读1《基于小波加权融合的水下图像增强技术》
    引用:W.Zhang etal.,"UnderwaterImageEnhancementviaWeightedWaveletVisualPerceptionFusion,"in IEEETransactionsonCircuitsandSystemsforVideoTechnology,vol.34,no.4,pp.2469-2483,April2024,doi:10.1109/TCSVT.2023.3299314.  ......
  • 【全网独家】OpenCV: 缩写(uchar、ushort、Vec) 介绍与应用
    1.缩写介绍uchar定义:unsignedchar,即无符号字符类型。范围:0到255。应用:常用于存储灰度图像的像素值。ushort定义:unsignedshort,即无符号短整型。范围:0到65535。应用:在高动态范围(HDR)图像处理中使用较多,因为它能表示更宽的数值范围。Vec定义:OpenCV中的模板类,用于......
  • Python知识点:如何使用Python实现图像分类
    使用Python实现图像分类通常涉及使用深度学习库,如TensorFlow或PyTorch。以下是使用TensorFlow和Keras来实现一个简单图像分类模型的步骤。1.安装所需的库首先,确保已安装必要的Python库。使用以下命令安装TensorFlow和其他必需的库:pipinstalltensorflown......
  • 【工程应用十二】Bayer图像格式中Hamilton-Adams及Zhang Wu 基于LMMSS算法的Demosaic
    Demosaic,中文直接发翻译为去马赛克,但是其本质上并不是去除马赛克,这让很多第一次接触这个名词或者概念的人总会想的更多。因此,一般传感器在采集信息时一个位置只采集RGB颜色中的一个通道,这样可以减少采集量,降低成本,由于人的视觉对绿色最为敏感,所以一般情况下,绿色分量会比红色......
  • 2024 年 13 个适用于 Linux 的最佳照片图像编辑器
      2024年13个适用于Linux的最佳照片图像编辑器   在本文中,我回顾了各种Linux发行版上可用的一些最佳照片编辑软件。这些不是唯一可用的照片编辑器,但却是Linux用户最流行和最常用的照片编辑器之一。1.GIMP首先,在列表中,我们有 GIMP,一个免费、开源、跨平台......
  • LCD屏幕显示PNG图像
    正点原子LCD屏幕显示PNG图像本文概要这段时间在学习正点原子的IMX6ULL开发板,在应用编程中有一个代码练习是需要在LCD屏幕上显示PNG图像,但由于我的屏幕参数和教程中的有些出入,于是经过自己查阅和修改,终于成功在自己的LCD屏幕上显示PNG图像。LCD屏幕参数我的LCD参数如下所示:......