OpenCV 計算影象的平均梯度
// OpenCV 計算影象的平均梯度
double calcAvG(const cv::Mat& img)
{
if(img.channels()!=1)
{
std::cout<<"輸入必須是單通道影象!"<<std::endl;
return 0.0;
}
img.convertTo(img,CV_64FC1);
double tmp = 0;
int rows = img.rows-1;
int cols = img.cols-1;
for(int i=0;i<rows;i++)
{
for(int j=0;j<cols;j++)
{
double dx = img.at<double>(i,j+1)-img.at<double>(i,j);
double dy = img.at<double>(i+1,j)-img.at<double>(i,j);
double ds = std::sqrt((dx*dx+dy*dy)/2);
tmp = tmp+ds;
}
}
double imageAvG = tmp/(rows*cols);
return imageAvG;
}
相關推薦
Opencv計算影象的梯度
#include "stdafx.h" #include <opencv2/opencv.hpp> #include <iostream> #include <fstream> #include <opencv2/core/core.hpp>
OpenCV 計算影象的平均梯度
// OpenCV 計算影象的平均梯度 double calcAvG(const cv::Mat& img) { if(img.channels()!=1) { std::cout<<"輸入必須是單通道影象!"<<s
OpenCV 影象平均梯度
// 影象平均梯度 double AvG_Gradient(Mat img) { // dx = img(i+1,j) - img(i,j); // dy = img(i,j+1) - img(i,j); // avg_gradient = sum(sqrt(
利用opencv函式計算影象的梯度幅度和梯度方向
沒有難點,就是為了方便使用記錄,自己實現的話比較麻煩,直接使用內建函式計算比較省心。 重點是這個函式: C++:void gpu::cartToPolar(const GpuMat& x, const GpuMat& y, GpuMat& ma
基於Opencv計算影象的均值和方差
實現每幅影象的每一個通道求均值和方差。 //這裡是三通道的影象 for(i=0;i<3;i++) //求均值 { m[i]=0; for(x=0;x<src->height;x++) {
Opencv---計算影象直方圖方差和均值
Abstrcat:本文主要講解如何計算影象直方圖的方差和均值 1.求解一個影象的直方圖,原圖需要為灰度圖,程式碼如下:(首先需要申明通道和直方圖的範圍) const int channels[1]={0}; const int histSize[1]=
0021-用OpenCV的pyrUp和pyrDown函式計算影象金字塔(向上/下采樣)
影象金字塔是一個影象集合,集合中所有的影象都源於同一個原始影象,通過對原始影象進行連續取樣得到影象集合。常見的有兩種影象金字塔,即高斯金字塔和拉普拉斯金字塔。高斯金字塔:向下降取樣影象。金字塔從i層生成第i+1層,先用高斯核對Gi進行卷積,然後,刪除所有偶數行和偶數列。這樣,新得到的影象面積會變為源
opencv(7)-影象金字塔+影象梯度
一、影象金字塔:高斯金字塔+拉普拉斯金字塔 第一步: 第二步: 上面兩步得到高斯金字塔,由高斯金字塔能得到拉普拉斯金字塔 拉普拉斯金字塔時,影象大小必須是2的n次方*2的n次方,不然會報錯 高斯金字塔程式碼 # -*- coding=GBK -*-
matlab 中 gradient函式計算影象梯度原理(轉載)
原文:http://blog.sina.com.cn/s/blog_53683dc20102v9f4.html Matlab中影象梯度的計算方式 轉載 2015-03-27 16:08:42 在matlab中可以使用gradient來計算一幅影象的梯度,它的計算方式是這樣的:
opencv學習---計算影象的水平積分投影和垂直積分投影
#include<opencv2\opencv.hpp> #include<stdio.h> using namespace cv; Mat VerticalProjection(Mat srcImage)//垂直積分投影 { if (srcImage.channels() >
OpenCV學習筆記(五):計算影象直方圖
畫素值在影象中的分佈情況是這幅影象的一個重要特徵。直方圖是一個簡單的表,它給出了衣服影象或一組影象中擁有給定數值的畫素數量。在OpenCV中計算直方圖可以通過使用cv::clacHist()函式。這是一
【OpenCV】影象變換(二)邊緣檢測:梯度運算元、Sobel運算元和Laplace運算元
邊緣 邊緣(edge)是指影象區域性強度變化最顯著的部分。主要存在於目標與目標、目標與背景、區域與區域(包括不同色彩)之間,是影象分割、紋理特徵和形狀特徵等影象分析的重要基礎。 影象強度的顯著變化可分為: •階躍變化函式,即影象強度在不連續處的兩邊的畫
3. OpenCV-Python——影象梯度演算法、邊緣檢測、影象金字塔與輪廓檢測、直方圖與傅立葉變換
一、影象梯度演算法 1、影象梯度-Sobel運算元 dst = cv2.Sobel(src, ddepth, dx, dy, ksize) ddepth:影象的深度 dx和dy分別表示水平和豎直方向 ksize是Sobel運算元的大小 1 # ****************
Zabbix通過SNMP監控多核CPU使用率時, 計算CPU平均使用率
mes ces zabb ext 觸發器 trend times http sso 環境:沒有Agent,只能通過SNMP監控時,需要獲取多核CPU的平均使用率。 ZABBIX的使用SNMP監控CPU使用率時,由於設備都是多核CPU,監控的都是單獨某一核心的使用率,但單獨某
計算BGR平均色
print log data ret logs true %d avg brush COLORREF AvgBGRData(BYTE *bgr,int size) { int r = 0,g = 0,b = 0; for(int i=0;i<size;i+=3)
OpenCV中影象的淺拷貝與深拷貝 = copy clone區別
下面介紹三種OpenCV複製影象的方法: 方法1、過載運算子= 使用過載運算子“=”進行的拷貝是一種淺拷貝,雖然它們有不同的矩陣頭,但是二者共享相同的記憶體空間,二者內容相互關聯,任何一個變數變化的同時另一個變數也隨之改變。 /*OpenCV v1版本*/ IplImage im
OpenCV實現影象上新增漢字
OpenCV已經更新至3.0了,但自帶函式putText依然不支援影象上新增漢字,所以下面實現了影象中新增漢字功能,話不多說,程式碼奉上。 void GetStringSize(HDC hDC, const char* str, int* w, int* h) { SIZE size;
學習OpenCV彩色影象的通道的分離(split)與合成(merge)
#include "cv.h" #include "highgui.h" using namespace cv; int main() { Mat src = imread("picture.bmp",-1); namedWindow("picture",
opencv獲得影象某點畫素值等
http://docs.opencv.org/2.4/doc/user_guide/ug_mat.html cv::Mat 獲取資料的下標和值 float intensity1 = frame.at<uchar>(pFaceInfo.iEyeLY,&
opencv在影象上根據頂點繪製直線
知道影象中的四個頂點,繪製四個頂點構成的四邊形。如果想繪製圖像上原有的點,新增drawContours()函式。 Mat imageContoursnew = Mat::zeros(edge.size(), CV_8UC