opencv对图像的一些操作

opencv学习总结 Mat类中depth与type属性的理解:depth是用来度量每一个像素中每一个通道的精度,但它本身与图像的通道数无关。depth数值越大,精度越高。type是矩阵的类型,包含矩阵中元素的类型以及通道数信息,type的命名格式为CV_(位数)+(数据类型)+(通道数)。Mat类中data属性理解:uchar类型的指针,指向Mat数据矩阵的首地址。Mat类中可以访问像素值的函数:1)ptr函数:该函数作用是可以访问任意一行像素的首地址,格式是image.ptr(指定的行数) 阅读详情
#include<iostream>
#include<chrono>

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>

using namespace std;

int main(){
    // 读取图片
    cv::Mat image;
    image = cv::imread("test.jpg");
    // 判断图像文件是否正常读取
    if(image.data == NULL){
        cerr<<"文件不存在"<<endl;
    }

    // 输出基本信息
    cout<<"图像宽为 :"<<image.cols <<", 高为 : "<< image.rows <<" ,通道数为 : "<<image.channels() <<endl;
    // 显示
    cv::imshow("image",image);
    cv::waitKey(0);

    // 判断image的类型
    if(image.type() != CV_8UC1 && image.type() != CV_8UC3){
        // 图像不符合要求
        cout<<"请输入一张彩色图或者灰度图"<<endl;
        return 0;
    }

    // 遍历图片
    chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
    for(size_t y=0; y<image.rows; y++){
        for(size_t x=0; x<image.cols; x++){
            // 访问位于x,y处的像素
            // 用cv::Mat::Ptr获得图像的行指针
            unsigned char* row_ptr = image.ptr<unsigned char>(y);   // row_ptr是第y行的头指针
            unsigned char* data_ptr = &row_ptr[x*image.channels()]; // data_ptr指向带访问的数据像素
            // 输出该像素的每个通道
            for(int c=0; c!= image.channels(); c++){
                unsigned char data = data_ptr[c];   // data为(x,y)第c个通道的值
            }
        }
    }
    chrono::steady_clock::time_point t2 = chrono::steady_clock::now();
    chrono::duration<double> time_used = chrono::duration_cast<chrono::duration<double>>(t2-t1);
    cout<<"遍历用时 : "<<time_used.count() <<"秒"<<endl;


    // cv::Mat的拷贝
    // 直接赋值并不会复制数据
    cv::Mat img = image;
    // 修改img会导致image发生变化
    img(cv::Rect(0,0,100,100)).setTo(0);    // 将左上角100*100的像素块置零
    cv::imshow("image",image);
    cv::waitKey(0);

    // 使用clone函数来复制数据
    cv::Mat image_clone = image.clone();
    image_clone(cv::Rect(0,0,100,100)).setTo(255);
    cv::imshow("image",image);
    cv::imshow("image_clone",image_clone);
    cv::waitKey(0);

    cv::destroyAllWindows();
    
    return 0;
}

 

OpenCv 如何对图像的像素进行操作 对图像的像素进行操作,我们可以实现空间增强,反色等目的。让我们先来看一下内存空间中图像矩阵,也就是Mat的矩阵数值部分是怎么存储的: 如果图像是一幅灰度图像,他就像这样,从左到右,从上到下,依次是矩阵的每一行每一列,这时候矩阵M(i,j)的值自然就是当前点的灰度值了。 而对于一幅彩色图像,由于它的像素分量channel并不是一个,所以每一列又分为了几个channel。拿常见的R 阅读详情

相关推荐

快速对图像的像素进行操作 opencv 实战

OpenCV 如何对图像的像素进行操作 2013年10月03日 ⁄ 综合⁄ 共 2952字 ⁄ 字号 小 中 大 ⁄ 评论关闭 对图像的像素进行操作,我们可以实现空间增强,反色等目的。让我们先来看一下内存空间中图像矩阵,也就是Mat的矩阵数值部分是怎么存储的: 如果图像是一幅灰度图像,他就像这样,从左到右,从上到下,依次是矩阵的每一行每一列,这时候矩阵M(i,j)的值自然就是当

zwlq1314521的专栏 4万+

图像像素读写image.at、image.ptr、指针

在OpenCV中,使用Mat对象表示图像数据,在使用at方法时,需要确保使用正确的数据类型(如uchar或Vec3b),这取决于图像的通道数和数据深度。

xiaofeixia002X的博客 928

OpenCV 图像基本操作

之前几篇文章介绍了OpenCV的一些模块概念,并没有细说每个模块具体的方法和使用。接下来就会详细介绍每个模块模块包含的方法和使用。本文将详细介绍图像的四种基本操作:访问和修改像素值、图像 ROI (Region of Interest) 操作、图像通道分离与合并、以及图像的缩放、旋转、平移和翻转。 常用方法:图像是由像素组成的矩阵,每个像素都有一个或多个值,表示颜色或灰度。在灰度图像中,每个像素只有一个值,表示灰度强度;在彩色图像中,每个像素通常有三个值,分别表示红色、绿色和蓝色(RGB)通道的强度。访问像

qq_38737545的博客 681

对uchar* data = image.ptr<uchar>(j)的理解

学习opencv的减色方法时,看到代码如下: void CBasicImageProcessing::colorReduce_binaryMask(cv::Mat image, int div) { int nl = image.rows;//行数 int nc = image.cols * image.channels();//列数 int n = static_cast<int>(log(static_cast<double>(div)) / log(2.0) + 0.5)

weixin_44210987的博客 4571

OpenCV(二)如何对图像的像素进行操作

对图像的像素进行操作,我们可以实现空间增强,反色等目的。让我们先来看一下内存空间中图像矩阵,也就是Mat的矩阵数值部分是怎么存储的: 如果图像是一幅灰度图像,他就像这样,从左到右,从上到下,依次是矩阵的每一行每一列,这时候矩阵M(i,j)的值自然就是当前点的灰度值了。 而对于一幅彩色图像,由于它的像素分量channel并不是一个,所以每一列又分为了几个channel。拿常见的RGB图像来说

技术宅 3867

OpenCV入门——基本图像操作

OpenCV入门—基本图像操作

fuleileileilei的博客 1112

2.2访问图像像素

  前面提到图像处理最基本的是操作图像的像素,学会如何存取其像素,是一切编写图像处理应用的基础。我们通过实现在图像中加入椒盐噪点来说明三种访问像素的方式。椒盐噪点是一种特殊的噪点,顾名思义,它随机地将部分像素设置为白色或黑色。在传输过程中,如果部分像素值丢失,那么这种噪点就会出现。在我们的代码里,将随机挑选若干像素,并将其设置为白色。 直接访问像素   为了访问像素,需要在代码中指定像素 ...

阿兵-AI医疗的专栏 619

OpenCV进阶操作:图像掩模

通过将掩码图像与原图像进行逐像素逻辑运算,可以实现对特定区域进行掩模(遮罩),只对感兴趣的区域进行处理,而不影响其他区域。掩码图像在图像分割、图像修复、图像特征提取等图像处理任务中很常见,它可以用来指定感兴趣的区域,从而在处理过程中对特定区域进行操作或分析。

m0_65065095的博客 1359

opencv图像处理学习(五十九)——数据与指针

当然,最近在看指针方面,当然也要了解一下opencv在这方面的用法。 1.指针 (1)saturate_cast<uchar>确保了RGB的值在0~255之间 Mat.ptr<uchar>(int i=0) 获取图像像素矩阵指针,i表示从第几行开始,从0开始计行数 saturate_cast<uchar>(-100) 返回0 saturate_cas...

图像学习之旅 1226

机器视觉OpenCV:OpenCV图像基本操作

OpenCV图像基本操作:图像的读写操作;图像的绘制操作;图像的算术操作;

天涯雨的博客 1198

基于OpenCv的图像基本操作

基于OpenCv的图像基本操作

需要远程指导仿真实验、代码有问题的,请后台私信或者关注公众号 901

(2)OpenCV——图像操作

文章目录二、OpenCV图像操作2.1 像素操作2.1.1 图像像素统计(1)寻找最大/最小像素值(2)计算图像的平均值和标准差2.1.2 图像间操作(1)比较运算(2)逻辑运算2.1.3 图像二值化2.2 图像变换2.2.1 图像连接2.2.2 尺寸变换2.2.3 翻转变换2.2.4 仿射变换2.2.5 透视变换2.2.6 极坐标变换2.2.7 ROI区域截取2.3 图像绘制2.3.1 圆形绘制2.3.2 直线绘制2.3.3 椭圆绘制2.3.4 多边形绘制2.3.5 文字生成2.4 图像金字塔2.4.1

weixin_45010061的博客 1631

OpenCV快速入门:图像形态学操作

图像形态学是一门强大而有趣的技术,它通过对图像进行形态学操作,使图像更适合后续处理步骤。在本文中,我们将深入探讨OpenCV中的图像形态学操作,快速入门这一关键领域。图像形态学作为数字图像处理的一个分支,致力于通过形态学操作实现对图像特征的提取、噪音的去除以及目标的分割。这一领域的研究为计算机视觉、图像识别和医学图像处理等领域提供了强大的工具和方法。

吾家有猫名探花的博客 1764

OpenCV 图像像素的逻辑操作

OpenCV 图像像素的逻辑操作

青春有梦,且行且学习! 1346

【阿里云大模型高级工程师ACP习题集】2.9 大模型应用生产实践(下篇)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 2237

3D点云修复实战:用PCN网络快速补全缺失的激光雷达数据(附代码)

本文详细介绍了PCN(Point Completion Network)网络在3D点云修复领域的实战应用。针对激光雷达数据常见的缺失问题,PCN通过端到端的深度学习架构,直接处理原始点云,实现由粗到精的快速补全。文章深入解析了其核心思想与编码器-解码器架构,并提供了完整的环境搭建、数据准备、模型实现、训练评估及在真实场景下的优化策略与代码示例,为自动驾驶、机器人等领域的开发者提供了高效的数据修复解决方案。

weixin_29041195的博客 392

opencv图像的基本操作

cv2.waitKey(1000):图像存在时间cv2.waitKey(0):按任意键退出灰度图。

qq_46026509的博客 1172

Flightmare实战:从零搭建强化学习无人机控制环境

本文详细介绍了从零开始搭建Flightmare强化学习无人机控制环境的完整流程。内容包括环境准备、核心库安装、依赖冲突解决,以及如何运行PPO算法示例进行训练与可视化测试。文章还提供了环境配置、自定义任务修改及常见问题的避坑指南,帮助开发者快速上手这一模块化的无人机RL仿真平台。

weixin_29081101的博客 356

opencv 图像操作,常用 OpenCV 内置函数

OpenCV 如何对图像的像素进行操作 对图像的像素进行操作,我们可以实现空间增强,反色,大部分图像特效系列都是基于像素操作等目的。先来看一下内存空间中图像矩阵,也就是Mat的矩阵数值部分是怎么存储的: 如果图像是一幅灰度图像,他就像这样,从左到右,从上到下,依次是矩阵的每一行每一列,这时候矩阵M(i,j)的值自然就是当前点的灰度值了。 而对于一幅彩色图像,由于它

有些代码不应该被忘记 3535

知识图谱本体建模工具Protege使用教程

1.下载 先去官网下载:protégé 直接下最新版,点击会有注册页面,只填必填项的name和project description即可。 下载后解压即可使用。 2、安装可视化工具Graphviz 去官网:Download | Graphviz下载。下一个最新版的zip就行。 我解压在了Protege文件夹下,然后在 Preference下指定目录。 指定一下你解压完的Graphviz下的dot.exe,确定。 PS:如果这样报错就尝试在环境变量的系统变量的...

子麒的博客 2万+

Qwen-Image-2.1本地图像生成整合包:8G显存一键部署指南

文生图模型是AI视觉创作的核心技术,其本地化部署需兼顾模型能力、硬件适配与工程易用性。Qwen-Image-2.1作为支持文本生成、图像编辑与多图参考的统一架构模型,突破了传统Diffusion模型在消费级显卡上的运行瓶颈。通过AWQ量化、vLLM推理优化与ComfyUI节点重构,实现8G显存稳定运行,显著降低CUDA环境配置复杂度。该方案面向设计师、教师与普通用户,提供开箱即用的本地AI图像工作流,适用于电商主图迭代、教学配图生成与IP角色延展等真实场景,让高质量图像生成真正走出云端,落地桌面。

weixin_29082143的博客 397
上一篇: c++计时chrono
下一篇: python dlib人脸检测
rdc01234
博客等级 码龄9年 10粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值