国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

加載美女圖片之OpenCV 圖像讀取與顯示

這篇具有很好參考價值的文章主要介紹了加載美女圖片之OpenCV 圖像讀取與顯示。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

加載美女圖片之OpenCV 圖像讀取與顯示

??作者介紹:22級樹莓人(計算機專業(yè)),熱愛編程<目前在c++和openCv階段>——目標Windows,MySQL,Qt,數(shù)據(jù)結構與算法,openCv,Linux,多線程,會持續(xù)分享學習成果和小項目的
??作者主頁:熱愛編程的小K
??專欄鏈接:OpenCV

??歡迎各位→點贊?? + 收藏?? + 留言???
??總結:希望你看完之后,能對你有所幫助,不足請指正!共同學習交流 ??

加載美女圖片之OpenCV 圖像讀取與顯示


一、圖像通道

  • 顏色通道
  • RGB 圖像有4 個默認通道:紅色、綠色和藍色各有一個通道,以及一個用于編輯圖像復合通道(主通道)
  • 彩色深度
  • 8位色,每個像素所能顯示的彩色數(shù)為2的8次方,即256種顏色。

  • 16位增強色,16位彩色,每個像素所能顯示的彩色數(shù)為2的16次方,即65536種顏色。

  • 24位真彩色,每個像素所能顯示的彩色數(shù)為24位,即2的24次方,約1680萬種顏色。

  • 32位真彩色,即在24位真彩色圖像的基礎上再增加一個表示圖像透明度信息的Alpha通道。

    • Alpha通道:一張圖片的透明和半透明度

CV_8UC3系列解讀

  • 函數(shù)原型

    CV_<bit_depth>(S|U|F)C<number_of_channels>
    
  • bit_depth:像素點占用空間大小,bit

  • S|U|F:

    • S:signed int——有符號
    • U:unsigned int——無符號
    • F:float——單精度浮點
  • number_of_channels

    • 1 單通道圖像,即為灰度圖像
    • 2 雙通道圖像
    • 3 三通道圖像
    • 4 Alpha通道的彩色圖像,四通道圖像

二、讀取圖像

1、Mat結構

大家可以用如下圖的方式查看,需要用到哪個調(diào)用哪個,這里只是簡單的介紹

我們可以看一下庫函數(shù)

加載美女圖片之OpenCV 圖像讀取與顯示

class  Mat
{
public/*
 		flag: 
 		1.數(shù)字簽名 
 		2.維度
 		3.通道數(shù)
 		4.連續(xù)性
 	*/
	int flags;					
	int dims; 					//數(shù)據(jù)維數(shù)
	int rows,cols; 				//數(shù)據(jù)行列
	uchar *data;				//存儲的數(shù)據(jù)		
    const uchar* datastart;		//數(shù)據(jù)開始
    const uchar* dataend;		//數(shù)據(jù)結束
    const uchar* datalimit;		//數(shù)據(jù)邊界
	//其他成員  
 	//.....
 	//其他方法
 	//.....
 public: 		//構造方式
    // 默認構造函數(shù) Mat A;
    Mat ()
    // 常用構造函數(shù) Mat A(10,10,CV_8UC3);
    Mat (int rows, int cols, int type)
    //Mat A(300, 400, CV_8UC3,Scalar(255,255,255));
    Mat (int ndims, const int *sizes, int type, const Scalar &s)
    Mat (Size size, int type)
    Mat (int rows, int cols, int type, const Scalar &s)
    Mat (Size size, int type, const Scalar &s)
    Mat (int ndims, const int *sizes, int type)
    Mat (const Mat &m)
    Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP)
    Mat (Size size, int type, void *data, size_t step=AUTO_STEP)
    Mat (int ndims, const int *sizes, int type, void *data, const size_t *steps=0)
    Mat (const Mat &m, const Range &rowRange, const Range &colRange=Range::all())
    //Mat D (A, Rect(10, 10, 100, 100) );
    Mat (const Mat &m, const Rect &roi)
    Mat (const Mat &m, const Range *ranges)
};
2、格式化打印圖像數(shù)據(jù)

函數(shù)原型

Ptr<Formatted> format(InputArray mtx, Formatter::FormatType fmt)

  • 第一個參數(shù)是圖像名稱
  • 第二個參數(shù)是打印方式
    • FMT_DEFAULT= 0,
    • FMT_MATLAB= 1,
    • FMT_CSV = 2,
    • FMT_PYTHON = 3,
    • FMT_NUMPY = 4,這也是py的一種打印方式,數(shù)組
    • FMT_C = 5,C語言方式打印
3、訪問或設置像素強度值

函數(shù)原型

Scalar 它將各個通道的值構成一個整體,賦給具有相同通道數(shù)的矩陣元素,通俗點就是一個復合數(shù)據(jù)

scalar(1,2,3);

分別把每一個像素點顏色通道設置為1,2,3,注意這里是BGR

4、imread函數(shù)讀取圖片
Mat imread( const String& filename, int flags = IMREAD_COLOR );
  • filename:文件路徑
  • flags:顯示方式
flags 解釋
IMREAD_REDUCED_COLOR_4 = 33 3通道BGR彩色圖像,使圖像大小減小1/4
IMREAD_REDUCED_GRAYSCALE_8 =64 單通道灰度圖像,并將圖像尺寸減小1/8
IMREAD_REDUCED_COLOR_8 = 65 3通道BGR彩色圖像,使圖像大小減小1/8
IMREAD_IGNORE_ORIENTATION = 128 不要根據(jù)EXIF的方向標志旋轉(zhuǎn)圖像
IMREAD_UNCHANGED = -1 按原樣返回加載的圖像(帶有alpha通道,否則會被裁剪)
IMREAD_GRAYSCALE = 0 單通道灰度圖像
IMREAD_COLOR = 1 3通道BGR彩色圖像
IMREAD_ANYDEPTH = 2 16位/32位圖像,其他則轉(zhuǎn)換為8位
IMREAD_ANYCOLOR = 4 圖像以任何可能的顏色格式讀取
IMREAD_LOAD_GDAL = 8 gdal驅(qū)動程序加載映像
IMREAD_REDUCED_GRAYSCALE_2 =16 單通道灰度圖像,并將圖像大小減小1/2
IMREAD_REDUCED_COLOR_2 = 17 3通道BGR彩色圖像,使圖像大小減小1/2
IMREAD_REDUCED_GRAYSCALE_4 =32 單通道灰度圖像,并將圖像尺寸減小1/4

三、顯示圖像

imshow()顯示圖片

imshow(const string& str,InputArray mat);
  • str:窗口名稱
  • mat:圖像

銷毀窗口

  • destroyAllWindows():銷毀所有窗口
  • destroyWindow(const char* windowName):銷毀指定窗口

四、保存圖像

imwrite()函數(shù)保存圖片

函數(shù)原型

bool imwrite( const String& filename, InputArray img,
              const std::vector<int>& params = std::vector<int>());
  • filename:保存的文件名
  • img:圖像
  • params:設置圖片質(zhì)量,壓縮率,一般不寫

五、綜合案例講解

1、測試上面的函數(shù)
void testMat() 
{
	//No.1構造方式
	Mat img(10, 10, CV_8UC1);
	imshow("1", img);

	//No.2 BGR
	Mat img2(300, 300, CV_8UC3, Scalar(0, 255, 0));
	imshow("2", img2);

	//No.3 clone方法拷貝
	Mat img3 = img2.clone();
	imshow("3", img3);
	//No.4
	Mat img4;
	img3.copyTo(img4);
	imshow("4", img4);

	//No.5
	Mat img5 = imread("mm.jpg", IMREAD_GRAYSCALE);
	imshow("5", img5);

	//No.6
	Mat img6 = imread("mm.jpg", IMREAD_REDUCED_COLOR_2);
	imshow("6", img6);
}

這里講一下拷貝

Mat img3 = img2.clone(); imshow("3", img3);

Mat img4; img3.copyTo(img4); imshow("4", img4);

  • clone()和copyTo():第一個是拷貝調(diào)用者,第二個是拷貝到

下面展示一下效果

加載美女圖片之OpenCV 圖像讀取與顯示

2、格式化打印效果
void print() 
{
	Mat img(10, 10, CV_8UC1);
	cout << "C:" << endl;
	cout << format(img, Formatter::FMT_C) << endl;
	cout << "csv:" << endl;
	cout << format(img, Formatter::FMT_CSV) << endl;
	cout << "py:" << endl;
	cout << format(img, Formatter::FMT_PYTHON) << endl;
}

效果展示

加載美女圖片之OpenCV 圖像讀取與顯示

3、保存圖片效果展示
void testSaveimg(const char* filename) 
{
	Mat img = imread("mm.jpg", IMREAD_REDUCED_COLOR_2);
	imwrite(filename, img);
}

這時候我們打開項目文件夾,就會發(fā)現(xiàn),多了一個圖片

加載美女圖片之OpenCV 圖像讀取與顯示文章來源地址http://www.zghlxwxcb.cn/news/detail-414117.html

4、綜合代碼
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void testMat() 
{
	//No.1構造方式
	Mat img(10, 10, CV_8UC1);
	imshow("1", img);

	//No.2 BGR
	Mat img2(300, 300, CV_8UC3, Scalar(0, 255, 0));
	imshow("2", img2);

	//No.3 clone方法拷貝
	Mat img3 = img2.clone();
	imshow("3", img3);
	//No.4
	Mat img4;
	img3.copyTo(img4);
	imshow("4", img4);

	//No.5
	Mat img5 = imread("mm.jpg", IMREAD_GRAYSCALE);
	imshow("5", img5);

	//No.6
	Mat img6 = imread("mm.jpg", IMREAD_REDUCED_COLOR_2);
	imshow("6", img6);
}
void print() 
{
	Mat img(10, 10, CV_8UC1);
	cout << "C:" << endl;
	cout << format(img, Formatter::FMT_C) << endl;
	cout << "csv:" << endl;
	cout << format(img, Formatter::FMT_CSV) << endl;
	cout << "py:" << endl;
	cout << format(img, Formatter::FMT_PYTHON) << endl;
}
void testSaveimg(const char* filename) 
{
	Mat img = imread("mm.jpg", IMREAD_REDUCED_COLOR_2);
	imwrite(filename, img);
}
int main()
{
	//testMat();
	//print();
	testSaveimg("love.jpg");
	waitKey(0);
	destroyAllWindows();
	return 0;
}

到了這里,關于加載美女圖片之OpenCV 圖像讀取與顯示的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • QImage加載opencv讀取的圖片出錯

    今天寫opencv的時候, 突然發(fā)現(xiàn)一件很奇怪的事情, 用攝像頭讀取的圖片, 用QImage加載的時候傳入img.data, 一切都很正常, 但是如果我是從保存的圖片讀取灰度圖, 傳入img.data, 它會告訴我QImage不能傳入memoryview, 但是我打了斷點, 也打印過, 它們確實都是memoryview, 而且

    2024年04月13日
    瀏覽(24)
  • openCV圖像讀取和顯示

    openCV圖像讀取和顯示

    運行 imread是OpenCV圖像處理庫中的一個函數(shù),用于從文件中讀取圖像數(shù)據(jù)并將其存儲為一個Mat對象 其中,參數(shù)filename指定了要讀取的圖像文件的路徑和文件名;參數(shù)flags指定了讀取圖像時的標志,它是一個可選參數(shù),默認值為IMREAD_COLOR,表示讀取彩色圖像。 imread函數(shù)支持讀取多

    2024年02月14日
    瀏覽(19)
  • 【OpenCV】P2 程序加載顯示圖片

    在 Opencv 中,如果想要加載展示一張圖片,有以下幾個步驟: 讀取圖像 :根據(jù)指定路徑讀取圖像,將圖像轉(zhuǎn)化為數(shù)字矩陣形式; 創(chuàng)建窗口 :創(chuàng)建圖像顯示窗口,命名窗口名稱; 顯示圖像 :通過窗口以數(shù)字矩陣形式展示圖像; 釋放內(nèi)存 :展示完成,釋放內(nèi)存。 OpenCV 提供函

    2024年01月25日
    瀏覽(17)
  • OpenCV 01(圖像加載與顯示)

    OpenCV 01(圖像加載與顯示)

    現(xiàn)在說的機器視覺(Machine Vision)一般指計算機視覺(Computer Vision), 簡單來說就是研究如何使機器看懂東西。就是是指用攝影機和電腦代替人眼對目標進行識別、跟蹤和測量等機器視覺,并進一步做圖形處理,使電腦處理成為更適合人眼觀察或傳送給儀器檢測的圖像。 人臉識別

    2024年02月09日
    瀏覽(17)
  • 如何使用OpenCV進行圖像讀取和顯示?

    如何使用OpenCV進行圖像讀取和顯示?

    使用OpenCV進行圖像讀取和顯示是計算機視覺領域中的常見任務之一。下面是關于如何使用OpenCV進行圖像讀取和顯示的簡要步驟和示例代碼。?? ?首先,你需要安裝OpenCV庫并確保正確導入它。然后,按照以下步驟執(zhí)行圖像讀取和顯示操作: 導入OpenCV庫: 讀取圖像文件: 在這個

    2024年02月06日
    瀏覽(24)
  • 【Qt 多線程+opencv 讀取和顯示圖像】

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 提示:這里可以添加本文要記錄的大概內(nèi)容: 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 加入了信號與槽機制來處理多線程中的圖像數(shù)據(jù): 創(chuàng)建工作線程類 :首先創(chuàng)建一個工作線程類,它從

    2024年02月19日
    瀏覽(24)
  • OpenCV讀取一張深度圖像并顯示

    OpenCV讀取一張深度圖像并顯示

    2024年02月12日
    瀏覽(24)
  • QT+opencv【opencv學習篇】OpenCV 讀取、顯示和保存圖像

    QT+opencv【opencv學習篇】OpenCV 讀取、顯示和保存圖像

    目錄 ? 一、OpenCV 讀取圖像 OpenCV 讀取函數(shù) 參數(shù): 二、OpenCV 顯示圖像 imshow函數(shù) imshow函數(shù)功能 imshow函數(shù)原型 三、OpenCV 保存圖像 四、結果和代碼 ? OpenCV 允許我們對圖像執(zhí)行多種操作,但要做到這一點,需要讀取一個圖像文件作為輸入,然后我們可以對其執(zhí)行各種操作。Ope

    2024年02月16日
    瀏覽(19)
  • 【C++的OpenCV】第三課-OpenCV圖像加載和顯示

    本章節(jié)中,將會學習到: 加載圖像(cv::imread()函數(shù)) 創(chuàng)建一個圖像顯示的窗口(cv::namedWindow()函數(shù)) 在窗口中顯示圖片(cv::imshow()函數(shù)) 功能介紹: ? ? ? ? 從指定路徑中讀取所選擇的圖像 參數(shù)解釋: Mat image: ? ? image 是一個Mat的對象。 ? ? Mat 是一種OpenCV中的圖像存儲

    2024年02月05日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包