服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++使用opencv读取图片的操作代码(图像处理)

C++使用opencv读取图片的操作代码(图像处理)

2022-11-15 15:32努力的袁 C/C++

这篇文章主要介绍了C++使用opencv读取图片,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

代码理解

?
1
using namespace cv;

解释:加入此代码,后面就不需要在函数前加入cv:: 如从cv::imread(),可以直接写成imread()

?
1
2
3
4
int main(int argc, char** argv)   
{
    return 0;
}

解释:

?
1
2
3
4
5
// argc是命令行,总的参数个数; argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数
// char *argv[]  用来取得你所输入的参数
// main(int argc, char **argv)和main(int  argc, char *argv[])一个意思
// int argc是输入在命令行上的参数(字符串)个数;
// *argv[]是指向字符串的指针数组,即数组元素是指向输入在命令行上的每个参数(字符串)的指针。
?
1
image = imread("./1.jpg");

解释:读取图片,其路径为相对路径,图片放在与.cpp相同路径下

?
1
2
imshow("meinv", image);
waitKey(0);

解释: 显示图片,加入waitKey(0)是防止图片出现之后马上自动消失。

?
1
2
3
4
for (size_t y = 0; y < image.rows; y++)
{
    return 0;
}

解释:size_t是一种数据相关的无符号类型,它被设计得足够大以便能够存储内存中对象的大小。

?
1
unsigned char* row_ptr = image.ptr<unsigned char>(y);

解释:

?
1
2
获取行指针,之所以用char的原因是因为颜色值是1-256用char能放得下
ptr是pointer的缩写,是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址。

全部代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)   
{                                 
    Mat image;
    image = imread("./1.jpg");
    if (image.data == nullptr)                     //nullptr是c++11新出现的空指针常量
    {
        cout << "图片文件不存在" << endl;
    }
    else
        //显示图片
        imshow("meinv", image);
        waitKey(0);
    // 输出图片的基本信息
    cout << "图像宽为:" << image.cols << "\t高度为:" << image.rows << "\t通道数为:" << image.channels() << endl;
    // 遍历每个像素
    //之所以用y这个名字表示行 是因为图片的坐标系中行号就是y
    for (size_t y = 0; y < image.rows; y++)
        unsigned char* row_ptr = image.ptr<unsigned char>(y);
        for (size_t x = 0; x < image.cols; ++x) {
            //这是获得像素数据数组的头指针,注意像素数据可能会有多个通道所以才需要用数组存储
            unsigned char* data_ptr = &row_ptr[x * image.channels()];
            //对当前像素逐个通道输出颜色值
            for (int i = 0; i < image.channels(); ++i) {
                cout << int(data_ptr[i])<<endl;
            }
        }
    system("pause");
    return 0;
}

读取结果

C++使用opencv读取图片的操作代码(图像处理)

参考

https://www.w3cschool.cn/opencv/opencv-a4gp2cfi.html

到此这篇关于C++使用opencv读取图片的文章就介绍到这了,更多相关c++ opencv读取图片内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_44747572/article/details/124321690

延伸 · 阅读

精彩推荐
  • C/C++C语言编程深入理解取整取余取模问题示例分析

    C语言编程深入理解取整取余取模问题示例分析

    这篇文章主要为大家介绍了C语言编程深入理解取整取余取模问题的示例分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步...

    鹿九丸5622022-03-02
  • C/C++一文搞懂Codec2解码组件

    一文搞懂Codec2解码组件

    这篇文章主要介绍了Codec2解码组件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    Kayson123456852022-01-04
  • C/C++C/C++在VScode中的配置教程详解

    C/C++在VScode中的配置教程详解

    这篇文章主要介绍了C/C++在VScode中的配置教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    吃指针的猫8492021-11-02
  • C/C++C++实现俄罗斯方块源码

    C++实现俄罗斯方块源码

    这篇文章主要为大家详细介绍了C++实现俄罗斯方块源码完整版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    C++教程网6232021-11-16
  • C/C++一篇文章带你了解C语言指针进阶

    一篇文章带你了解C语言指针进阶

    这篇文章主要介绍了C语言指针详解及用法示例,介绍了其相关概念,然后分享了几种用法,具有一定参考价值。需要的朋友可以了解下...

    ZDDWLIG4112022-01-04
  • C/C++C++实现归并排序算法

    C++实现归并排序算法

    这篇文章主要为大家详细介绍了C++实现归并排序算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    麦迪尔11892021-08-26
  • C/C++C++编程中队内联函数的理解和使用

    C++编程中队内联函数的理解和使用

    这篇文章主要介绍了C++编程中队内联函数的理解和使用,简单举例讲解了inline关键字引出的内联函数的相关知识,需要的朋友可以参考下...

    coder_xia6112021-03-22
  • C/C++C++ Qt实现音视频播放功能

    C++ Qt实现音视频播放功能

    Qt版本 5.9 基于C++11 Qt核心组件与附加组件安装时请打钩 否则可能出现项目中缺少视频播放模块的问题,由于最近着手的Qt项目需要视频播放自己做的时候踩...

    Test_2338002022-03-03