文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

代码理解

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读取图片内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯