这篇文章主要介绍了C++使用opencv读取图片,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
代码理解
using namespace cv;解释:加入此代码,后面就不需要在函数前加入cv:: 如从cv::imread(),可以直接写成imread()
int main(int argc, char** argv)
{
return 0;
}解释:
// argc是命令行,总的参数个数; argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数
// char *argv[] 用来取得你所输入的参数
// main(int argc, char **argv)和main(int argc, char *argv[])一个意思
// int argc是输入在命令行上的参数(字符串)个数;
// *argv[]是指向字符串的指针数组,即数组元素是指向输入在命令行上的每个参数(字符串)的指针。image = imread("./1.jpg"); 解释:读取图片,其路径为相对路径,图片放在与.cpp相同路径下
imshow("meinv", image);
waitKey(0);解释: 显示图片,加入waitKey(0)是防止图片出现之后马上自动消失。
for (size_t y = 0; y < image.rows; y++)
{
return 0;
}解释:size_t是一种数据相关的无符号类型,它被设计得足够大以便能够存储内存中对象的大小。
unsigned char* row_ptr = image.ptr<unsigned char>(y);解释:
获取行指针,之所以用char的原因是因为颜色值是1-256用char能放得下
ptr是pointer的缩写,是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址。全部代码
#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;
}读取结果

参考
https://www.w3cschool.cn/opencv/opencv-a4gp2cfi.html
到此这篇关于C++使用opencv读取图片的文章就介绍到这了,更多相关c++ opencv读取图片内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:C++使用opencv读取图片的操作代码(图像处理)
基础教程推荐
猜你喜欢
- 利用QT设计秒表功能 2023-05-30
- g++: const 丢弃限定符 2022-10-07
- C语言的三种条件判断语句你都了解吗 2023-03-05
- character-encoding – Linux中最常见的C语言编码(和Unix?) 2023-11-21
- Qt数据库应用之实现通用数据库请求 2023-03-18
- 纯C++代码详解二叉树相关操作 2023-05-15
- C语言数组长度的计算方法实例总结(sizeof与strlen) 2023-04-26
- 05-C语言进阶——动态内存管理 2023-11-20
- C语言植物大战数据结构二叉树递归 2023-04-09
- VisualStudio2010安装教程 2023-01-05
