1. 程式人生 > >opencv+清晰度檢測

opencv+清晰度檢測



/******************************************************************************
說明:
衡量畫面模糊程度的主要方法就是梯度的的統計特徵,通常梯度值越高,
畫面邊緣資訊越豐富,畫面越清晰。然而需要注意,對於一些文理比較
少的畫面,即使不失焦,梯度值也很小。
******************************************************************************/
#include "stdafx.h"
#include "cv.h"  
#include "highgui.h"  
#include "iostream"  
#include "math.h"  


using namespace cv;


/********************************************************************************
相鄰畫素灰度方差法
*********************************************************************************/




void clear2(IplImage * image)
{
IplImage * gray = cvCreateImage(cvGetSize(image), image->depth, 1);
cvCvtColor(image, gray, CV_BGR2GRAY);
double sum = 0;
int height = gray->height;
int width = gray->width;
int step = gray->widthStep / sizeof(uchar);
uchar * data = (uchar *)gray->imageData;
for (int i = 0; i<gray->height - 1; i++)
{
for (int j = 0; j<gray->width - 1; j++)
{
sum += sqrt((pow((double)(data[(i + 1)*step + j] - data[i*step + j]), 2) + pow((double)(data[i*step + j + 1] - data[i*step + j]), 2)));
sum += abs(data[(i + 1)*step + j] - data[i*step + j]) + abs(data[i*step + j + 1] - data[i*step + j]);
}
}
double cast = sum / (gray->height * gray->width);
printf("cast2 : %f\n", cast);
}


//opebcv自帶的公式讀取畫素值,效率比較低  
void clear3(IplImage * image)
{
IplImage * gray = cvCreateImage(cvGetSize(image), image->depth, 1);
cvCvtColor(image, gray, CV_BGR2GRAY);
double sum = 0;
int height = gray->height;
int width = gray->width;
CvScalar s, x, y;
for (int i = 0; i<gray->height - 1; i++)
{
for (int j = 0; j<gray->width - 1; j++)
{
s = cvGet2D(gray, i, j);
double a = s.val[0];
x = cvGet2D(gray, i + 1, j);
double b = x.val[0];
y = cvGet2D(gray, i, j + 1);
double c = y.val[0];
sum += sqrt((double)pow((a - b), 2) + (double)pow((a - c), 2));
sum += abs(a - b) + abs(a - c);
}
}
double cast = sum / (gray->height * gray->width);
printf("cast3 : %f\n", cast);
}


int main()
{
CvCapture * capture = cvCreateFileCapture("d:\\video\\xuehua.avi");
IplImage * frame;
cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
int count = 0;
while (true)
{
count++;
frame = cvQueryFrame(capture);
if (!frame) break;
cvShowImage("video", frame);
if (!(count % 50))
{
printf("f : %d\n", count);
clear2(frame);
//clear3(frame);
}
if (cvWaitKey(10) == 27) break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("video");
return 0;
}

相關推薦

opencv+清晰度檢測

/****************************************************************************** 說明: 衡量畫面模糊程度的主要方法就是梯度的的統計特徵,通常梯度值越高, 畫面邊緣資訊越豐富,畫面越清晰。然而需

OpenCV人臉檢測(完整源代碼+思路)

exceptio pop ret 基礎 err 攝像 alt lena ann 本博文IDE為vs2013 OpenCV2.49 話不多說,先看視頻演示(20S演示): 例如以下: https://v.youku.com

OpenCV---直線檢測

https waitkey show 情況 曲線 open 數組 邊界 win 直線檢測相關 Opencv學習筆記-----霍夫變換直線檢測及原理理解 OpenCV-Python教程(9、使用霍夫變換檢測直線) Hough變換是經典的檢測直線的算法。其最初用來檢測圖像中

OpenCV——邊緣檢測(sobel算子、Laplacian算子、scharr濾波器)

scale 變換 得到 疊加 操作 fault sch laplacian 技術 1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 4 using nam

清晰度檢測照片演算法

清晰度檢測照片演算法 功能:可以從一個指定的資料夾中讀取照片,然後轉為灰度影象等處理,然後把處理的虹膜影象進行分類,清晰的影象儲存在一個資料夾中,不清晰的虹膜影象也存在一個資料夾中,資料夾中影象的下標從1開始遞增,也可以自己修改程式碼吧原始影象的編號原封不動的進行儲存。 連續讀取照片(下

OpenCV邊緣檢測三種演算法(canny、sobel、laplacian)

Canny演算法 #include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp> using namespace std; using namespace cv; //邊緣檢測 int mai

opencv——特徵檢測

繪製關鍵點的drawKeypoints()函式: void drawKeypoints( const Mat &image,//輸入影象 const vector<KeyPoint> &keypoints,//

python用opencv批量檢測人臉,並儲存

import cv2 import sys import os from PIL import Image cascPath = "haarcascade_frontalface_default.xml" #訓練引數檔案 faceCascade = cv2.CascadeCl

基於opencv檢測到人臉,便將人臉用骷髏頭代替。

工具: /*Result window title*/ #define WND_RESULT "result" static CvMemStorage* storage = 0; static CvHaarClassifierCascade* cascade ; con

OpenCV入門教程之十二】OpenCV邊緣檢測 Canny運算元 Sobel運算元 Laplace運算元 Scharr濾波

                本篇文章中,我們將一起學習OpenCV中邊緣檢測的各種運算元和濾波器——Canny運算元,Sobel運算元,Laplace運算元以及Scharr濾波器。文章中包含了五個淺墨為大家準備的詳細註釋的博文配套原始碼。在介紹四塊知識點的時候分別一個,以及最後的綜合示例中的一個。文章末尾

OpenCV運動檢測跟蹤 blob track 框架組成模組詳解

                在..\opencv\doc\vidsurv資料夾中有三個doc檔案,Blob_Tracking_Modules、Blob_Tracking_Tests、TestSeq,其中Blob_Tracking_Modules必須需要詳讀的。“FG/BG Detection” modul

基於c++的OpenCV目標檢測

宣告:本文的原始碼全部來OpenCV的官方文件,筆者只是做一個學習筆記 以下程式碼主要實現通過攝像頭完成人臉、眼睛、身體檢測 #include "opencv2/objdetect.hpp" #include "opencv2/highgui.hpp" #includ

OpenCV輪廓檢測

邊緣 因此 view window pan 組織 hang otto 技術 《【OpenCV入門指南】第三篇Canny邊緣檢測》中介紹了邊緣檢測,本篇介紹輪廓檢測,輪廓檢測的原理通俗的說就是掏空內部點,比如原圖中有3*3的矩形點。那麽就可以將中間的那一點去掉。

簡單opencv人臉檢測程式碼:LBP/Haar特徵

前言 目前網路上有太多opencv人臉檢測程式碼,但大部分都是用老的1.0介面,程式碼存在太多冗餘(各種記憶體分配...看著太不舒服了,話說還有人用1.x版本的opencv嗎- -),而實際上用2.0以上版本實現人臉檢測功能是可以比較簡潔的。(官方也早有相關示例) 人臉檢

Python-OpenCV人臉檢測---直接呼叫訓練好的Harr特徵

人臉檢測 定義人臉檢測函式detectFaces(),檢測圖片中所有出現的人臉,並返回人臉的矩形座標(矩形左上、右下頂點座標)。使用上面提到的xml檔案(haar特徵),haarcascades目錄下有好幾個是關於人臉檢測的檔案,這裡選擇haarcascade_frontalface_default.

keras系列︱人臉表情分類與識別:opencv人臉檢測+Keras情緒分類(四)

人臉識別熱門,表情識別更加。但是表情識別很難,因為人臉的微表情很多,本節介紹一種比較粗線條的表情分類與識別的辦法。 Keras系列: 本次講述的表情分類是識別的分析流程分為:

影象清晰度檢測程式

在抓拍人臉時,為丟掉抓拍質量不高的資料。寫了一個程式來測試三種清晰度檢測的演算法。 程式的主要功能是,依次讀取圖片資料夾中的圖片,進行清晰度檢測,每張圖片會得到一個清晰度打分結果。為了提高程式執行速度,將清晰度的閾值寫在cpg檔案裡,讓程式去讀cpg檔案裡的閾值,與每張圖片

學習OpenCV——行人檢測&人臉檢測(總算執行出來了)

之前執行haar特徵的adaboost演算法人臉檢測一直出錯,加上今天的HOG&SVM行人檢測程式,一直報錯。 今天總算髮現自己犯了多麼白痴的錯誤——是因為外部依賴項lib檔案沒有新增完整,想一頭囊死啊 做程式一定要心如止水!!! 仔細查詢!!! 1.人臉

Opencv人臉檢測

OpenCv人臉檢測: 要實現人臉識別功能,首先要進行人臉檢測,判斷出圖片出人臉的位置,才能進行下一步的操作! OpenCv人臉檢測的方法 在OpenCv中主要使用兩種特徵(即兩種方法)進行人臉檢測 1、Haar特徵 2、LBP特

海思移植opencv+車輛檢測

1.確保ubuntu能上網2.安裝cmake程式碼: 全選sudo apt-get install cmake-gui3.下載opencv2.4.9 Linux版原始碼,不要用最新的3.0.0http://opencv.org/downloads.html4.解壓open