環(huán)境配置 :
使用xcode創(chuàng)建工程 使用cocoaPods 配置工程:
cd 工程名 ? ?-------> 導入工程路徑
pod init
pod search OpenCV? --------> 搜索OpenCV 復制到Podfile文件
pod install ?---------> 安裝
安裝 好之后 需要 將工程中 要引用openCV頭文件的.m文件 改為.mm 告訴編譯器要兼容c++
頭文件引用? #import? <opencv2/opencv.hpp>
圖像處理引用: #import<opencv2/imgcodecs/ios.h> ? ?
注:未全 待補充
using namespace cv;? ? 使用CV時需要寫成: cv::? 將 using namespace cv 加入引入頭文件下方 某些地方可省略 cv::
如下代碼 Mat 沒加入本句應寫成 :? ? cv::Mat
-----------------------------------------------------------------------------------------------
Mat A, C;? ? /**< 只創(chuàng)建信息頭 */
Mat B(A);? ? /**< 拷貝構造函數(shù) (只拷貝信息頭) */
C = A;? ? ? /**< 賦值 */
//? ? Mat D (A, Rect(10, 10, 100, 100) );
Mat E = A(Range::all(), Range(1, 3));
Mat F = A.clone(); /**< 拷貝圖像矩陣A到F */
Mat G;
A.copyTo(G); /**< 拷貝圖像矩陣A到G */
/**
* ? 注意:
*? OpenCV函數(shù)中輸出圖像的內(nèi)存分配是自動完成的(如果不特別指定的話)才漆。
*? 使用OpenCV的C++接口時不需要考慮內(nèi)存釋放問題炊苫。
*? 賦值運算符和拷貝構造函數(shù)( ctor )只拷貝信息頭榜贴。
*? 使用函數(shù) clone() 或者 copyTo() 來拷貝一副圖像的矩陣。
*/
// 構造函數(shù)
Mat M(2, 2, CV_8UC3, Scalar(0, 0, 255));
std::cout << "M = " << std::endl << "" << M << std::endl << std::endl;
/** 該行代碼表示創(chuàng)建一個行數(shù)為2潘懊,列數(shù)為2的圖像澎剥,圖像元素是8位無符號整數(shù)型饿自,3通道,
圖像的所有像素值被初始化為(0, 0, 255)? OpenCV默認顏色順序為 BGR
*? CV_8UC(n) 自定義通道數(shù) n:通道數(shù)
*/
輸出結果為:?
常用的構造函數(shù)有:
?Mat::Mat()無參數(shù)構造方法;
?Mat::Mat(int rows, int cols, int type)
創(chuàng)建行數(shù)為rows褐筛,列數(shù)為col,類型為type的圖像;
?Mat::Mat(Size size, int type)
創(chuàng)建大小為size,類型為type的圖像;
?Mat::Mat(int rows, int cols, int type, const Scalar& s)24
創(chuàng)建行數(shù)為rows封拧,列數(shù)為col志鹃,類型為type的圖像,并將所有元素初始
化為值s;
?Mat::Mat(Size size, int type, const Scalar& s)
創(chuàng)建大小為size泽西,類型為type的圖像曹铃,并將所有元素初始化為值s;
?Mat::Mat(const Mat& m)
將m賦值給新創(chuàng)建的對象,此處不會對圖像數(shù)據(jù)進行復制捧杉,m和新對象
共用圖像數(shù)據(jù);
?Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)創(chuàng)建行數(shù)為rows陕见,列數(shù)為col,類型為type的圖像味抖,此構造函數(shù)不創(chuàng)建
圖像數(shù)據(jù)所需內(nèi)存评甜,而是直接使用data所指內(nèi)存,圖像的行步長由step指定仔涩。
?Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP)創(chuàng)建大小為size忍坷,類型為type的圖像,此構造函數(shù)不創(chuàng)建圖像數(shù)據(jù)所需
內(nèi)存红柱,而是直接使用data所指內(nèi)存承匣,圖像的行步長由step指定蓖乘。
?Mat::Mat(const Mat& m, const Range& rowRange, const Range& colRange)創(chuàng)建的新圖像為m的一部分锤悄,具體的范圍由rowRange和colRange指
定,此構造函數(shù)也不進行圖像數(shù)據(jù)的復制操作嘉抒,新圖像與m共用圖像數(shù)
據(jù);
?Mat::Mat(const Mat& m, const Rect& roi)
創(chuàng)建的新圖像為m的一部分零聚,具體的范圍roi指定,此構造函數(shù)也不進
行圖像數(shù)據(jù)的復制操作些侍,新圖像與m共用圖像數(shù)據(jù)隶症。
這些構造函數(shù)中,很多都涉及到類型type岗宣。type可以是CV_8UC1蚂会,CV_16SC1,...耗式,CV_64FC4等胁住。里面的8U表示8位無符號整數(shù),16S表示16位有符號整數(shù)刊咳,64F表示64位浮點數(shù)(即double類型);C后面的數(shù)表示通道數(shù)彪见,例如C1表示一個
通道的圖像,C4表示4個通道的圖像娱挨,以此類推余指。
參考資料:OpenCV-基本圖像容器處理?
轉載請注明出處