基於OpenCV的視訊影象組態 (6): 形狀動畫效果
形狀效果
形狀效果:顯示目標區域位置不變,顯示內容(原始陣不變,遮蔽陣變化 -> 顯示內容變化)
enum CbwShapeDirection { // 形狀方向 csdZoomIn = 0, // 放大 csdZoomOut = 1 // 縮小 }; enum CbwShapeType { // 形狀型別 cstCircle = 0, // 圓 cstRect = 1, // 方框 cstDiamond = 2, // 菱形 cstPlus = 3 // 加號 }; bool __fastcall TCbwAnimationEffect_Shape::BuildMaskMat(cv::Mat& destMat, cv::Mat& srcMat, TRect displayRect) { int zoomType = MyOptionType.Items[1].CurrentValue; // 放大、縮小 int shapeType = MyOptionType.Items[2].CurrentValue; // 型別 TRect wholeRect(0, 0, displayRect.right - displayRect.left, displayRect.bottom - displayRect.top); double cx = wholeRect.right / 2.0, cy = wholeRect.bottom / 2.0; double deltaX = double(FCurrentIndex + 1) / FTotalFramesInOnePeriod * cx; double deltaY = double(FCurrentIndex + 1) / FTotalFramesInOnePeriod * cy; double startX = deltaX, startY = deltaY; if (zoomType == csdZoomOut) { startX = cx - deltaX; startY = cy - deltaY; } BYTE * pSrc = srcMat.data; BYTE * pDst = destMat.data; for (int row = 0; row < destMat.rows; ++row) for (int col = 0; col < destMat.cols; ++col) { bool hasValueFlag = (*pSrc++ != 0); if (!hasValueFlag) * pDst = 0; bool inFlag = false; double a = (cx - startX) * 1.5, b = (cy - startY) * 1.5; if (shapeType == cstCircle) { // 圓 if (a > 0 && b > 0) { double v = (row - cy) * (row - cy) / (b * b) + (col - cx) * (col - cx) / (a * a); inFlag = (v <= 1); } } if (shapeType == cstRect) { // 方框 inFlag = (fabs(cx - startX) >= fabs(cx - col) && fabs(cy - startY) >= fabs(cy - row)); } if (shapeType == cstDiamond) { // 菱形 if (a > 0 && b > 0) { if (zoomType == csdZoomOut) { a *= 2; b *= 2; } bool lr1 = (col < (((-a) * (1 - (row - cy) / (b))) + cx)); bool lr2 = (col < (((-a) * (1 - (row - cy) / (-b))) + cx)); bool lr3 = (col < (((a) * (1 - (row - cy) / (-b))) + cx)); bool lr4 = (col < (((a) * (1 - (row - cy) / (b))) + cx)); inFlag = (!lr1 && !lr2 && lr3 && lr4); } } if (shapeType == cstPlus) { // 加號 inFlag = (fabs(cx - startX) > fabs(cx - col) || fabs(cy - startY) > fabs(cy - row)); } *pDst++ = (inFlag != (zoomType == csdZoomOut) ? 0 : 255); } return true; }
演示效果
相關推薦
基於OpenCV的視訊影象組態 (6): 形狀動畫效果
形狀效果 形狀效果:顯示目標區域位置不變,顯示內容(原始陣不變,遮蔽陣變化 -> 顯示內容變化) enum CbwShapeDirection { // 形狀方向 csdZoomIn = 0, // 放大 csdZoomOut =
基於OpenCV的視訊影象組態 (4) :劈裂動畫效果
寫在前面 本系列部落格URL: 配套軟體下載地址: 配套軟體含四個可執行檔案:DrGraph.exe,YeeVingDriver.exe,YeeVingPlayer.exe,WatchDog.exe 其中, DrGraph.exe為圖形博士軟體,可進行電路
基於OpenCV的視訊影象組態 (14):音量控制
實現程式碼 編寫的播放軟體,慢慢地有了聲音控制的需求,在網上找了一下,用Core Audio APIS 音訊應用開發即可。入門稍慢,不過用起來很簡單。整理了一個類供呼叫。 class TCbwAudioEndpointVolumeCallback; typede
基於OpenCV的視訊影象組態 (8) :隨機線條動畫效果
隨機線條效果實現 class TCbwAnimationEffect_RandomLine : public TCbwAnimationEffect { // 隨機線 virtual bool __fastcall BuildMaskMat(cv::Mat&a
基於OpenCV的視訊影象組態 (10): CEF瀏覽器與圖形軟體互嵌
開發者工具 CEF核心很強大,已經提供相當多的功能。 比如開發者工具,呼叫是如此的簡單。 稍微包裝一下,宣告一個屬性 __property bool ShowDevTool = { read = GetDevToolVisible, write = Se
基於OpenCV的視訊影象組態 (2) :動畫總體
/** *@class TCbwAnimationEffect *@brief 動畫基類 * * 處理動畫基本內容 *@author DrGraph *@version 1.0 *@date 2017-10-07 *@QQ: 282397369 */ class TC
基於OpenCV的視頻組態 (1) :時鐘
oot 這般 ctc .cn email 定制 ima ret locked 寫在前面 本系列博客URL: http://www.cnblogs.com/drgraph http://blog.csdn.net/arwen 配套軟件下載地址: http://ww
基於OpenCV的視頻組態 (2) :動畫總體
tag evo odm enc 底部 direction san 基本上 界面 寫在前面 本系列博客URL: http://www.cnblogs.com/drgraph http://blog.csdn.net/arwen 配套軟件下載地址: http://w
基於OpenCV的視頻組態 (3):常見PPT動畫1
app 基本 rom font uil 簡單 ren .net 記錄 寫在前面 本系列博客URL: http://www.cnblogs.com/drgraph http://blog.csdn.net/arwen 配套軟件下載地址: http://www.cz
基於OpenCV 的影象分割
1、影象閾值化 原始碼: #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> using namespace std; using
基於OpenCV的影象恢復
根據自適應濾波原理,設計一種可較好的保留底紋細節的自適應中值濾波器,對下圖1進行恢復(5%椒鹽噪聲),要求達到圖2的效果。 圖1 圖2 用visual studio 2012實現的程式碼如下: 特別注意的是,把要處理的圖片放在工程目錄下!!! #include<opencv2/
基於OpenCV的影象形態學處理
1、形態學概述 一詞通常表示生物學的個分支,該主要研究動植形態 和結構 。 而我們影象處理中的形態學,往指是數學形態學。 最基本的形態學操作有兩種:膨脹和腐蝕 膨脹:(dilate)就是求區域性最大值的操作。從數學角度來說,膨脹或者腐蝕操作就是講影象(或影象的一部分割槽域,稱之為A)與核(稱
基於opencv的影象縮放,旋轉,透視變換。
工具程式碼: #define WARPSTEPSIZE 0.2; #define RESIZESTEPSIZE 0.1; #define ROTATESTEPSIZE 10; float g_H_value = 0; float g_resize_value = 0;
基於opencv的影象旋轉匹配
.h檔案 #ifndef _OPENCV_fftm_HPP_ #define _OPENCV_fftm_HPP_ #ifdef __cplusplus #include "opencv2/core.hpp" #include "opencv2/opencv.hpp" //
基於Opencv計算影象的均值和方差
實現每幅影象的每一個通道求均值和方差。 //這裡是三通道的影象 for(i=0;i<3;i++) //求均值 { m[i]=0; for(x=0;x<src->height;x++) {
【LeetCode & 劍指offer刷題】數組題6:26. Remove Duplicates from Sorted Array
++ move locate amp ice min public mat 1.4 【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 26. Remove Duplicates from Sorted Array Given a s
Basler工業相機基於opencv 採集影象
本實驗在兩個部落格的基礎上實現的,首先是配置opencv http://blog.csdn.net/lili2425960/article/details/54234299 先前查了一些關於win10+opencv3.0(2.xx)+vs配置的文章,準備以此為樣本來配置
OpenCV數字影象處理十一:利用分段線性化處理影象 在某些情況效果很實用
分段線性變換 分段線性變換也叫做灰度線性拉伸,常用的是分三段分線性變換。如下圖: 圖中對灰度區間[a,b]進行了擴充套件,而灰度區間[0, a]和[b, Mf]收到了壓縮。通過細心調整折線拐點的位置及控制分段直線的斜率,可對任意灰度區間進行擴充套件和壓縮。、本文就是基
Python-OpenCV 處理影象(一):基本操作 cv2
0x00. 圖片讀、寫和顯示操作 安裝好 OpenCV 之後,首先嚐試載入一張最簡單的圖片並顯示出來,程式碼示例: 第一種方式使用cv2.cv的LoadImage、ShowImage和SaveImage函式 import cv2.cv as cv # 讀圖片 image=cv.LoadImage('img
基於FPGA視訊影象處理系統設計
摘要 本報告給出一個基於FPGA+兩片DDR2組成的核心板、帶有4路視訊輸入和VGA介面的開發板進行的視訊影象採集和處理系統的設計。使用TW2867進行視訊輸入訊號的編碼,儲存到DDR2中,通過FPGA和ARM的聯合控制,通過I2C匯流排進行通訊,進行數字影