C++使用opencv讀取圖片的操作代碼(圖像處理)
代碼理解
using namespace cv;
解釋:加入此代碼,后面就不需要在函數(shù)前加入cv:: 如從cv::imread(),可以直接寫成imread()
int main(int argc, char** argv)
{
return 0;
}解釋:
// argc是命令行,總的參數(shù)個數(shù); argv[]是argc個參數(shù),其中第0個參數(shù)是程序的全名,以后的參數(shù)命令行后面跟的用戶輸入的參數(shù) // char *argv[] 用來取得你所輸入的參數(shù) // main(int argc, char **argv)和main(int argc, char *argv[])一個意思 // int argc是輸入在命令行上的參數(shù)(字符串)個數(shù); // *argv[]是指向字符串的指針數(shù)組,即數(shù)組元素是指向輸入在命令行上的每個參數(shù)(字符串)的指針。
image = imread("./1.jpg"); 解釋:讀取圖片,其路徑為相對路徑,圖片放在與.cpp相同路徑下
imshow("meinv", image);
waitKey(0);解釋: 顯示圖片,加入waitKey(0)是防止圖片出現(xiàn)之后馬上自動消失。
for (size_t y = 0; y < image.rows; y++)
{
return 0;
}解釋:size_t是一種數(shù)據(jù)相關(guān)的無符號類型,它被設(shè)計(jì)得足夠大以便能夠存儲內(nèi)存中對象的大小。
unsigned char* row_ptr = image.ptr<unsigned char>(y);
解釋:
獲取行指針,之所以用char的原因是因?yàn)轭伾凳?-256用char能放得下 ptr是pointer的縮寫,是一個特殊的變量,它里面存儲的數(shù)值被解釋為內(nèi)存里的一個地址。
全部代碼
#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新出現(xiàn)的空指針常量
{
cout << "圖片文件不存在" << endl;
}
else
//顯示圖片
imshow("meinv", image);
waitKey(0);
// 輸出圖片的基本信息
cout << "圖像寬為:" << image.cols << "\t高度為:" << image.rows << "\t通道數(shù)為:" << image.channels() << endl;
// 遍歷每個像素
//之所以用y這個名字表示行 是因?yàn)閳D片的坐標(biāo)系中行號就是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) {
//這是獲得像素?cái)?shù)據(jù)數(shù)組的頭指針,注意像素?cái)?shù)據(jù)可能會有多個通道所以才需要用數(shù)組存儲
unsigned char* data_ptr = &row_ptr[x * image.channels()];
//對當(dāng)前像素逐個通道輸出顏色值
for (int i = 0; i < image.channels(); ++i) {
cout << int(data_ptr[i])<<endl;
}
}
system("pause");
return 0;
}讀取結(jié)果

參考
https://www.w3cschool.cn/opencv/opencv-a4gp2cfi.html
到此這篇關(guān)于C++使用opencv讀取圖片的文章就介紹到這了,更多相關(guān)c++ opencv讀取圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++中的構(gòu)造函數(shù)與析造函數(shù)詳解
這篇文章主要介紹了C++中的構(gòu)造函數(shù)與析造函數(shù)詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
詳解C++中的增量運(yùn)算符++和減量運(yùn)算符--的用法
這篇文章主要介紹了C++中的增量運(yùn)算符++和減量運(yùn)算符--的用法,分為前綴情況和后綴情況來講,需要的朋友可以參考下2016-01-01
C++算法學(xué)習(xí)之貪心算法的應(yīng)用
貪心算法是指,在對問題求解時,總是做出在當(dāng)前看來是最好的選擇。本文為大家準(zhǔn)備了幾個示例,從而能深入了解貪心算法的應(yīng)用,需要的可以參考一下2022-05-05
C語言 深入解讀數(shù)據(jù)結(jié)構(gòu)之堆的實(shí)現(xiàn)
堆就是用數(shù)組實(shí)現(xiàn)的二叉樹,所以它沒有使用父指針或者子指針。堆根據(jù)“堆屬性”來排序,“堆屬性”決定了樹中節(jié)點(diǎn)的位置2021-11-11

