C++使用opencv讀取圖片的操作代碼(圖像處理)
更新時間:2022年04月24日 11:15:46 作者:努力的袁
這篇文章主要介紹了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讀取圖片內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

