1. 程式人生 > >opencv影象處理之滑鼠事件(矩形roi繪圖)

opencv影象處理之滑鼠事件(矩形roi繪圖)

為滿足影象處理要求,博主寫此簡易程式碼有如下作用:

1、根據感興趣區域做深度學習標籤;

2、提取感興趣區域進行目標跟蹤;

3、對感興趣區域進行進一步操作。

具體程式碼如下:

//Author: samylee
//Contact email: [email protected]
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <stdio.h>  

using namespace cv;

Mat org, dst, img, tmp;

void on_mouse(int event, int x, int y, int flags, void *ustc)
{
	static Point pre_pt = (-1, -1);
	static Point cur_pt = (-1, -1);
	if (event == CV_EVENT_LBUTTONDOWN)
	{
		org.copyTo(img); 
		pre_pt = Point(x, y);
	}
	else if (event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON))//摁下左鍵,flags為1 
	{
		img.copyTo(tmp);
		cur_pt = Point(x, y);
		rectangle(tmp, pre_pt, cur_pt, Scalar(0, 255, 0, 0), 1, 8, 0);
		imshow("img", tmp);
	}
	else if (event == CV_EVENT_LBUTTONUP) 
	{
		org.copyTo(img);
		cur_pt = Point(x, y);
		rectangle(img, pre_pt, cur_pt, Scalar(0, 255, 0, 0), 1, 8, 0);
		imshow("img", img);
		img.copyTo(tmp);
		int width = abs(pre_pt.x - cur_pt.x);
		int height = abs(pre_pt.y - cur_pt.y);
		if (width == 0 || height == 0)
		{
			return;
		}
		dst = org(Rect(min(cur_pt.x, pre_pt.x), min(cur_pt.y, pre_pt.y), width, height));
		namedWindow("dst");
		imshow("dst", dst);
	}
}
void main()
{
	org = imread("desktop.jpg");
	org.copyTo(img);
	namedWindow("img");
	setMouseCallback("img", on_mouse, 0); 
	imshow("img", img);
	waitKey(0);
}


效果圖如下:

處理前:


處理後:


任何問題請加唯一QQ2258205918(名稱samylee)!


相關推薦

opencv影象處理滑鼠事件矩形roi繪圖

為滿足影象處理要求,博主寫此簡易程式碼有如下作用: 1、根據感興趣區域做深度學習標籤; 2、提取感興趣區域進行目標跟蹤; 3、對感興趣區域進行進一步操作。 具體程式碼如下: //Author: s

影象處理其他雜項MeanShift的目標跟蹤演算法opencv c++程式碼 VS2015+opencv3.2

//#include "stdafx.h" //#include "cv.h" //#include "highgui.h" #include<opencv.hpp> #define u_char unsigned char #define DIST 0.5 #define

數字影象處理直方圖均衡化Octave)

直方圖的均衡化是什麼呢? 舉個簡單的例子:在一個圓中有很多石頭,都集中在圓心附近,對其均衡化就是讓這些石頭儘可能的均勻分佈在圓這個區域內。 並且還有一個原則:如果石頭A在原來狀態下距離圓心的距離在所有石頭是第4位,那麼均衡化後仍然是第4位,相對順序不能變。(大概就是一個拉的更寬了)

FPGA影象處理行快取linebuffer的設計一 FPGA影象處理行快取linebuffer的設計一

轉載: FPGA影象處理之行快取(linebuffer)的設計一 FPGA影象處理之行快取(linebuffer)的設計一 作者:OpenS_Lee   1 背景知識     在FPGA數字影象處理中,行快取的使用非常頻繁,

OpenCV滑鼠事件 選取矩形ROI區域

目的: 通過點選滑鼠,選擇矩形ROI區域,為後續的ROI區域處理提供方便。 程式碼如下: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include

影象處理特徵提取HOG特徵 特徵數的計算

對於64128的影象而言,每88的畫素組成一個cell,每22個cell組成一個塊,也就是說,64128的圖片,總共有36715=3780個特徵。 單個cell的9個特徵,每個block(掃描視窗)包含22個cell也就是229=36個特徵,一個64128大小的

影象處理特徵提取:HOG特徵

HOG方向梯度直方圖: (1)具體在HOG中方向梯度的實現:首先用[-1,0,1]梯度運算元對原影象做卷積運算,得到x方向(水平方向,以向右為正方向)的梯度分量gradscalx,然後用[1,0,-1]T梯度運算元對原影象做卷積運算,得到y方向(豎直方向,以向上為正方向)的

影象處理特徵提取HOG特徵簡單梳理

  上圖是一張行人圖的四種表示方式,原三色圖,灰度圖,邊緣圖,梯度圖,人腦根據前期學習與先驗知識很容易理解到影象中包含著一個行人,並可以根據一定情況將其從影象中摳選出來,但計算機是怎麼思考的呢?怎樣讓計算機理解以上影象中包含的是一個行人呢?前三個影象現在情況不適用,所以選取梯度圖,現在的梯度圖同樣也是人腦處理

數字影象處理伽馬gamma變換

輸入影象灰度值 r,輸出影象灰度值s,變換公式 s = T(r),如下 : 原影象“arial.jpg“,取0.7,3.0,變換後圖像如下,並附三通道分佈直方圖(B,G,R). Arial                                        

python for OpenCV影象處理模板匹配以及分水嶺演算法

首先看些效果如下: 具體程式碼如下: if __name__ == '__main__': from muban import Ui_Form else: from muban.muban import Ui_

Opencv影象處理詳解掩膜mask

1.在OpenCV中我們經常會遇到一個名字:Mask(掩膜)。很多函式都使用到它,那麼這個Mask到底什麼呢?2.如果我們想要裁剪影象中任意形狀的區域時,應該怎麼辦呢? 答案是,使用掩膜(masking)。 我們先看一下掩膜的基礎。影象的位運算。影象基本運算影象的基本運算有很

opencv影象處理輪廓外背景顏色改變

自行學習弄得簡單程式碼,使用了影象中的輪廓發現以及提取,再繪製出來,改變輪廓外的畫素 首先,標頭檔案,寫的比較多,沒用的可以自己去除 #include <opencv2/core/core.hpp> #include<openc

opencv影象處理常見濾波器

影象平滑 Smoothing, also called blurring, is a simple and frequently used image processing operation. 平滑,也叫模糊. 本質就是把某點的畫素值轉換為其及其周圍畫素值的不同權重的疊加.h(k,l)即為卷積核,或

數字影象處理筆記——酉變換 Unitary image transforms

酉變換 酉變換可以由如下方式定義,其中輸入和輸出之間的關係可以寫成矩陣相乘的形式,矩陣A稱為酉矩陣,A滿足A的逆矩陣等於A的共軛對稱矩陣 DFT變換就是一個酉變換,係數矩陣A滿足每一列的模是1並且由於不同頻率正弦訊號之間的正交性,列之間是相互正交,因此A也是一個酉矩陣 對於二

Android自動化測試初探: 模擬鍵盤滑鼠事件Socket+Instrumentation實現

通過Socket + Instrumentation實現模擬鍵盤滑鼠事件主要通過以下三個部分組成:   *   Socket程式設計:實現PC和Emulator通訊,並進行迴圈監聽   *   Service服務:將Socket的監聽程式放在Service中,從而達到

java影象處理---灰度化二值化處理

java實現圖片灰度化(二值化) 此函式功能: 1. 讀圖 2. 建立緩衝區 3. 將圖片畫素複製到緩衝區的相應位置 4. 輸出比較 輸入: RGB

Android自動化測試初探: 再述模擬鍵盤滑鼠事件adb shell 實現

上一篇博文中講述了通過Socket程式設計從外部向Emulator傳送鍵盤滑鼠模擬事件,貌似實現細節有點複雜。其實Android還有一種更簡單的模擬鍵盤滑鼠事件的方法,那就是通過使用adb shell 命令。 1.傳送鍵盤事件: 命令格式1:adb shell inp

C++ Opencv——影象處理處理+矩形物體分割

 影象預處理分割目標 // ROI提取 Mat Image_ROI(Mat frame) { Mat gray, bw, img, bkup; /*目標提取——預處理——Mat ROI*/ /*預處理很重要——直接找到目標*/ //預處理很重要——直接找到目標 // 灰度化

視訊、圖形影象處理Opencv技術記錄Opencv教程影象處理imgproc模組平滑影象

目標 在本教程中,您將學習如何使用OpenCV函式應用各種線性濾鏡來平滑影象,例如: 理論 注意 下面的解釋屬於Richard Szeliski和LearningOpenCV的計算機視覺:演算法和應用一書 平滑,也稱為模糊,是一種簡單且經常使用的影象處理操作。

opencvpython影象處理

一、函式簡介 1、zeros—構造全0矩陣 函式原型:zeros(shape, dtype=None, order=’C’) shape:矩陣大小;例如:300x300; dtype:資料型別;例如:”uint8” order:資料排列順序,預設按列排的 2、line—畫線