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è)計得足夠大以便能夠存儲內(nèi)存中對象的大小。
unsigned char* row_ptr = image.ptr<unsigned char>(y);
解釋:
獲取行指針,之所以用char的原因是因為顏色值是1-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 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) { //這是獲得像素數(shù)據(jù)數(shù)組的頭指針,注意像素數(shù)據(jù)可能會有多個通道所以才需要用數(shù)組存儲 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; }
讀取結(jié)果
參考
https://www.w3cschool.cn/opencv/opencv-a4gp2cfi.html
到此這篇關(guān)于C++使用opencv讀取圖片的文章就介紹到這了,更多相關(guān)c++ opencv讀取圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)
下面小編就為大家?guī)硪黄P(guān)于STL的erase()陷阱-迭代器失效問題的總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12C++實現(xiàn)主機字節(jié)序和網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換示例
這篇文章主要為大家介紹了C++實現(xiàn)主機字節(jié)序和網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11C++入門基礎(chǔ)之命名空間、輸入輸出和缺省參數(shù)
C++入門基礎(chǔ)篇的內(nèi)容為C++的基本特性,只有在掌握C++的基本特性后,是進入后面類和對象學習的基礎(chǔ),下面這篇文章主要給大家介紹了關(guān)于C++入門基礎(chǔ)之命名空間、輸入輸出和缺省參數(shù)的相關(guān)資料,需要的朋友可以參考下2023-01-01關(guān)于STL中vector容器的一些總結(jié)
vector作為STL提供的標準容器之一,是經(jīng)常要使用的,有很重要的地位,并且使用起來也是灰常方便。vector又被稱為向量,vector可以形象的描述為長度可以動態(tài)改變的數(shù)組,功能和數(shù)組較為相似2013-09-09使用VS2022開發(fā)在線遠程編譯部署的C++程序(圖文詳解)
這篇文章主要介紹了使用VS2022開發(fā)可以在線遠程編譯部署的C++程序,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12