OpenCV3編程入門筆記(2)計時函數、感興趣區域RIO、分離/混合通道


11     繪制直線的line函數 DrawLine(Mat img, Pont start, Point end);

         繪制橢圓的ellipse函數 DrawEllipse(Mat img, double angle) 其中angle為橢圓旋轉角度

         繪制矩形的rectangle函數 DrawRectangle

         繪制原的circle函數 DrawFilledCircle(Mat img, Point center)

繪制填充的多邊形的fillpoly函數 DrawPolygon(Mat img)

 

12     計時函數 getTickCount和getTickFrequency

         getTickCount表示CPU自某個事件以來走過的時鍾周期數

         getTickFrequency表示一秒鍾所走的時鍾周期數

         double time0 = static_cast<double>(getTickCount());記錄起始時間

         time0 = ((double)getTickCount()-time0)/getTickFrequency(); 得出運行時間

13     感興趣區域:RIO

         也就是從圖像中選擇的一個圖像區域,這個區域是圖像分析所關注的重點,有兩個方法:

  1. 使用矩形區域Rect,指定矩形的左上角坐標和矩形的長度和寬度:

Mat imageRIO = image(Rect(100,200,logo.cols,logo.rows));

  1. 指定感興趣行或列的范圍(Range),Range是指從起始索引到終止索引的一連段連續序列:

imageRIO  = image(Range(100,100+logo.rows),Range(200,200+logo.cols));

例子:(其中logoImage.copyTo是將mask內容復制到imageRIO1中,相似函數addWeight());

#include "stdafx.h"

#include <opencv2/opencv.hpp>

using namespace cv;

using namespace std;

int main()

{

         Mat srcImage = imread("C:/Users/Administrator/Pictures/timg.jpg");

         Mat dstImage;

         int rowNumber = srcImage.rows;

         int colNumber = srcImage.cols;

         Mat imageRIO = srcImage(Rect(100,200,150,350));

         imshow("3",imageRIO);

         imwrite("圖3.jpg",imageRIO);

 

         //waitKey(100);

         cvtColor(srcImage,dstImage,CV_BGR2GRAY);

         imwrite("圖1.jpg",srcImage);

         Mat logoImage = imread("圖3.jpg");

         if (!logoImage.data)

         {

                   printf("讀取圖片失敗\n");

                   return false;

         }

         Mat imageRIO1 = srcImage(Rect(100,200,imageRIO.rows,imageRIO.cols));

         Mat mask = imread("圖1.jpg");

         logoImage.copyTo(imageRIO1,mask);

         imshow("1",srcImage);

         imshow("2",dstImage);

         waitKey(0);

         return 0;

}

 

14     分離顏色通道 split 多通道混合 merge

         split(srcImage,channels);// 通道分離

         imageBlueChannel = channels.at(0);

         imageGreenChannel= channels.at(1);

         imageGreChannel = channels.at(2);

 

         merge(channels,mergeImage);//混合圖像


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM