opencv影象讀取和cv::Mat
1、在opencv的C++ API中,所有的類和函式都在名稱空間cv內定義,可以使用
using namespace cv;
或者是加上字首 cv::
2、imread讀入影象
生成的影象由無符號(unsigned char)構成(OpenCV中為CV_8U)
image=cv::imread("puppy.bmp",CV_LOAD_IAMGE_COLOR); //讀取一個影象檔案,並轉換為三通道彩色影象,每個畫素有3個位元組(CV_8U3C)
使用image.channels()可以獲得影象的通道數;
當用imread開啟路徑制定不完整的影象時,imread會自動開啟預設目錄。如果從控制檯執行程式,預設目錄就是可執行檔案所在的目錄,如果從IDE中執行程式,為專案檔案所在的目錄。
3、imshow顯示影象
imshow顯示的影象是由整數(CV_16U表示16為無符號整數,CV_32S表示32為有符號整數)構成,影象每個畫素的值會被除以256,以便能夠在256級灰度中顯示。在顯示由浮點數構成的影象時,值的範圍會被假設為0.0(黑色)到1.0(白色)之間,大於1.0顯示白色,小於0.0顯示黑色。
4、cv::Mat
(1)cv::Mat 由一個頭部和一個數據塊組成,頭部包含了矩陣的相關資訊(大小,通道數,資料型別等),資料塊包含了影象中所有畫素的值。頭部有一個指向資料塊的指標,即data屬性。
cv::Mat(240,320,CV_8U,100); //建立一個240x320的影象,每個畫素對應一個位元組
(2)cv::Scalar,用於在呼叫函式時傳遞畫素值。
cv::Mat image(240,320,CV_8UC3,cv::Scalar(100)); //建立一個紅色影象,通道順序為BGR
(3)cv::Size,包含了矩陣的高度和寬度
cv::Mat image(cv::Size(320,240),CV_8UC3);//建立一個未初始化的彩色影象。
可以使用create方法分配或重新分配影象的資料塊,如果影象已經分配,其原來的內容會被釋放。
iamge.create(200,200,CV_8U);
(4)cv::Mat 的at(x,y)可以訪問元素,在編譯時必須明確方法返回值的的型別。
如:
image.at<uchar>(j,i)=255;
彩色影象的每個畫素對應三個部分:紅色,綠色,藍色。包含彩色影象的cv::Mat返回一個向量,向量中包含三個8為的數值,訪問彩色影象的方法:
image.at<cv::Vec3b>(j,i)[channel]=value;
(5)cv::Mat 的ptr方法可以直接訪問影象中一個行的地址。
如:
uchar* data=image.ptr<uchar>(j);
(6)cv::Mat的isContinuous方法可以判斷出影象有沒有被填充,如果影象沒有被填充,它就返回true.
如:
if(image.isContinuous())
{
//沒有填充畫素
image.reshape(1,1);//設定新的通道數為1,新的行數為1
}
相關推薦
opencv影象讀取和cv::Mat
1、在opencv的C++ API中,所有的類和函式都在名稱空間cv內定義,可以使用 using namespace cv; 或者是加上字首 cv:: 2、imread讀入影象 生成的影象由無符號(unsigned char)構成(OpenCV中為C
opencv 影象讀取顯示和畫素操作
從今天起,開始從頭系統學習下opencv,下面記錄下影象的基本操作: 1. 影象的讀取和顯示 Mat image = imread(imagePath, 1); 第二個引數表示圖片讀入的方式(
mwArray和cv::Mat轉化函數 20170812
row 是否 mat return i+1 emp brush assert split 不是新東西了,但是有必要專門把這兩個函數拿出來記錄一下。 需要註意的是,Mat2mwArry函數的輸入Mat類型是 CV_8UC1,灰度圖。 如果要傳遞多通道圖像的話,需要先cv:
第四天 opencv 影象變換和空間影象濾波
####################這段是轉載,解釋影象變換和空間濾波區別即cv.medianBlur和cv.filter2D####### 在空間域的操作主要可以分為兩類:第一類是所謂的“影象強度變換”(Intensity Transform),另一類是所謂的“空間域影象濾波”(Spati
QT入門 QImage和cv::Mat的相互轉換(八)
QImage轉換為cv::Mat的方法 cv::Mat QImage2cvMat(QImage image) { cv::Mat mat; qDebug() << image.format(); switch(image.format())
opencv--影象色彩和對比度
處理影象經常會對影象色彩進行增強,這就是改變影象的亮度和對比度。本章基於opencv對影象的亮度和對比度進行處理操作。其實,這是對影象的每一個畫素點進行相應的操作。 在這個公式中 alpha 第一個引數α必須是大於零,不然則基本上沒有意義了。 α能使影象畫素成倍數的增長或降低(
Opencv---影象對比度和亮度調節
調整影象亮度和對比度操作屬於畫素變換---點操作 數學原理: g(x,y) = af(x,y)+b; a>0,b為增益變數 程式碼實現: #include <opencv2/opencv.hpp> #include <iost
第四天 opencv 影象變換和空間影象濾波
####################這段是轉載,解釋影象變換和空間濾波區別即cv.medianBlur和cv.filter2D####### 在空間域的操作主要可以分為兩類:第一類是所謂的“影象強度變換”(Intensity Transform),另一類是所謂的“空間域
OpenCV影象拼接和影象融合技術
影象拼接在實際的應用場景很廣,比如無人機航拍,遙感影象等等,影象拼接是進一步做影象理解基礎步驟,拼接效果的好壞直接影響接下來的工作,所以一個好的影象拼接演算法非常重要。 再舉一個身邊的例子吧,你用你的手機對某一場景拍照,但是你沒有辦法一次將所有你要拍的景物全部拍下來,
python影象讀取和儲存方案總結
以下程式中用到的timg.jpg原圖為 1、scipy Scipy是一個高階的科學計算庫,其中misc模組很好用,可以將陣列儲存為圖片,也可以對numpy形式影象陣列靈活處理,比如裁剪圖片某一部分等。 from scipy import misc def main(): im
OpenCV遍歷和輸出Mat矩陣中資料方法總結
一、Mat中影象畫素的訪問方式 1.ptr操作和指標-高效的方式 這種方式基於.ptr的操作,也是比較推薦的遍歷影象的方式。 1 2 3 4
CvMat 和cv::Mat之間的區別
cv::Mat是一個類(Class),而CvMat是一個Struct,從型別上就可以知道二者存在很大區別。前者除了幾個成員變數之外還有很多的成員函式和過載函式,可以實現很多的影象資料處理功能,而後者只有幾個成員變數,要對其成員進行一些處理,需要借用別的函式。
Opencv影象對比度和亮度的調整-滾動條
#include<iostream> #include<opencv2/opencv.hpp> #include"stdio.h" using namespace std; using namespace cv; Mat srcImage, re
python的兩種影象讀取和處理方法
1 skimage庫 from skimage import data_dir,io, data img = data.camera() #讀取data中預先儲存的影象camera #Anaconda 版本參
[OpenCV開發]OpenCV影象編碼和解碼 imencode和imdecode使用,用於網路傳輸圖片
在很多應用中,經常會直接把圖片的二進位制資料進行交換,比如說利用 socket 通訊傳送圖片二進位制資料,或者直接用記憶體資料庫(例如 Redis)來傳遞圖片二進位制資料。 這個時候,當你的應用程式讀到記憶體裡的二進位制圖片資料時,怎麼樣直接轉為 OpenCV 可以使用
Android OpenCV影象識別和影象追蹤
首先介紹一下OpenCV中影象識別和跟蹤機制: 影象跟蹤機制是確定矩目標在3D環境中的姿態,並根據此類資訊環繞目標物件繪製輪廓線。在最終的2D影象中,考慮到目標可能相對於相機傾斜,因而輪廓線將呈現為四邊形(不一定是矩形)。 上述跟蹤機制主要包含以
ImageMagick 的 Image 和 OpenCV 的 cv::Mat 如何轉換
參考自: http://blog.csdn.net/revolver/article/details/12851395 僅以 BGR 格式為例: 一、cv::Mat -> Image Image Mat2Magick(const cv::Mat& img )
macOS python3 opencv 讀取和寫入影象
python opencv 影象 讀取 寫入 1,讀取和寫入影象 1,讀取和寫入影象 #! /usr/local/bin/python3 # coding:utf-8 import cv2 #讀取影象 img = cv2.imread("/U
OpenCV 中影象處理類,Mat類和Ipllmage類
Mat類是OpenCV 中最核心的類,全稱是Matrix,意為矩陣或者陣列的意思,該類的宣告在標頭檔案opencv2\core\core.hpp中, Mat 類的建構函式如下: Mat(int rows,int cols,int type) 其中rows代表矩
C#呼叫 opencv cv::Mat 影象, 採用折中方法
C# 用於介面的製作要比MFC高效許多,但是有時候為了效率需要用C++程式,這樣就涉及到了把C++核心演算法程式做成dll,在C#中進行呼叫。 之前有將IplImage* 這類結構用於C#呼叫,