1. 下載zxing https://github.com/zxing/zxing
2. cmake 編譯
3. 添加相應(yīng)文件目錄路徑
3. 提示 "public: static unsigned int const zxing::DecodeHints::CHARACTER_SET" (?CHARACTER_SET@DecodeHints@zxin...
我使用的是OpenCV 2.2版本。得到了一個透視矩陣,想把屏幕上的一個二維點經(jīng)過這個透視矩陣進行變換,本身很簡單的一個事情,卻頗費了一番周折。原因是剛接觸OpenCV,而且使用了OpenCV新添加的C++部分的矩陣類Mat,使用起來還真有點不順手,因為OpenCV中沒有向量的說法。一個矩陣變換一個向量就讓我找了半天。
最終得以解決,還是使用了CvMat類而不是Mat類。代碼如下:...
opencv partition
// This function splits the input sequence or set into one or more equivalence classes and
// returns the vector of labels - 0-based class indexes for each element.
// predicate(a,b)...
那么在Windows下有什么好的內(nèi)存泄漏檢測工具呢?微軟提供Visual Studio開發(fā)工具本身沒有什么太好的內(nèi)存泄漏檢測功能,我們可以使用第三方工具Visual Leak Detector(以下簡稱vld)。
vld工具是VC++環(huán)境下一款小巧易用、免費開源的內(nèi)存泄漏檢測工具,vld可以顯示導(dǎo)致內(nèi)存泄漏的完整內(nèi)存分配調(diào)用堆棧。vld的檢測報告能夠?qū)γ總€內(nèi)存泄漏點提供完整的堆棧跟蹤,并且包...
1.高通濾波器
首先,對一副圖像進行如下二維傅里葉變換。
我們將u=0和v=0帶上式,我們可以得到如下式子。
根據(jù)上式,可以到F(0,0)的值是非常大的。這里,我們將F(0,0)稱為直流分量,直流分量比其他的成分要大好幾個數(shù)量級。所以,這也就是傅里葉譜為什么需要使用對數(shù)變換才能看清楚的原因。
這里,對于高通濾波器而言,由于直流分量被衰減,...
之前的博文主要介紹了空間域內(nèi)的濾波器,本文主要從頻域的角度進行分析。主要使用傅里葉變換,將空間域的圖像轉(zhuǎn)換到頻域內(nèi),在頻域內(nèi)進行數(shù)字圖像處理。這部分的內(nèi)容及其重要,頻域內(nèi)的處理可以解決空間域內(nèi)無法完成的圖像增強。本文首先從數(shù)學(xué)角度,對圖像的頻域內(nèi)的性質(zhì)進行分析,然后在著重介紹濾波器在頻域內(nèi)的性質(zhì)。
1.傅里葉變換與頻域
在之前的文中,我們已經(jīng)進行過一些基本的...
opencv3.0 xphoto模塊包含了簡單白平衡算法。沒有注明算法原理,出自哪篇論文,很不方便。搜索之后,發(fā)現(xiàn)一篇博客不錯,介紹了該原理。同時實現(xiàn)了robust color balance。
白平衡的意思就是:是圖片中最亮的部分為白色,最暗的部分為黑色。其余部分進行拉伸。博客效果如下:
原圖:
robust color balance:...
一、自適應(yīng)直方圖均衡化(Adaptive histgram equalization/AHE)
1.簡述
自適應(yīng)直方圖均衡化(AHE)用來提升圖像的對比度的一種計算機圖像處理技術(shù)。和普通的直方圖均衡算法不同,AHE算法通過計算圖像的局部直方圖,然后重新分布亮度來來改變圖像對比度。因此,該算法更適合于改進圖像的局部對比度以及獲得更多的圖像細節(jié)。
...
本來想用單應(yīng)性求解小規(guī)模運動的物體的位移,但是后來發(fā)現(xiàn)即使是很微小的位移也會帶來超級大的誤差甚至錯誤求解,看起來這個方法各種行不通,還是要匹配知道深度了以后才能從三維仿射變換來入手了,糾結(jié)~
estimateRigidTransform():計算多個二維點對或者圖像之間的最優(yōu)仿射變換矩陣 (2行x3列),H可以是部分自由度,比如各向一致的切變。getAffineTransform()...
前面一種方案實際上還是存在一定的問題的, 就是這個避重就輕的初始g(n)值127*s(127表示0-255之間的中間值), 這個東西帶來的最直接的問題就是邊緣的效果在這個算法下是不咋地的。 其實從這個所謂的"Wellner 1993", 后人又做了很多的改進, 使之效率更高, 效果更好。比方說這個Derek Bradley和Gerhard Roth搞的這個所謂 Adaptive Threshold...
一、配置
1、 從http://code.google.com/p/tesseract-ocr/downloads/list下載tesseract-ocr-3.02-vs2008、tesseract-ocr-3.02.eng.tar、tesseract-ocr-3.02.02.tar、leptonica-1.68-win32-lib-include-dirs相關(guān)文件;
2、 將所有文件存放...
void thin(const Mat &src, Mat &dst, const int iterations)
{
const int height =src.rows -1;
const int width =src.cols -1;
//拷貝一個數(shù)組給另一個數(shù)組
if(src.data != dst.data)
{
src.cop...
我們在實際應(yīng)用中對圖像進行的操作,往往并不是將圖像作為一個整體進行操作,而是對圖像中的所有點或特殊點進行運算,所以遍歷圖像就顯得很重要,如何高效的遍歷圖像是一個很值得探討的問題。
一、遍歷圖像的4種方式:at(i,j)
Mat類提供了一個at的方法用于取得圖像上的點,它是一個模板函數(shù),可以取到任何類型的圖像上的點。下面我們通過一個圖像處理中的實際來說明它的用法。
在實際應(yīng)用中,我...
在參考https://code.google.com/p/imgwarp-opencv/的基礎(chǔ)上,把mls圖像變形算法進行了實現(xiàn),但感覺效果不是很好。在此貼出源代碼,希望有人其同探討與對其改進。
原圖像 ...
基本上就是learning opencv一書第4章,練習(xí)7的答案了。
先來個自己寫的透視變換代碼:
//透視變換
#include
#include
#include
int main(int argc,char** argv)
{
CvPoint2D32f srcQuad[4],dstQuad[4];
CvMat* warp_matrix = cvCreateMat(3...
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
if (0)//write
{
FileStorage fs("test.xml", FileStorage::WRITE);
fs << ...
// homographicfilter.cpp : 定義控制臺應(yīng)用程序的入口點。
//
#include "stdafx.h"
#include
#include
#include
using namespace cv;
using namespace std;
void shiftDFT(cv::Mat& fImage);
void create...
1. 簡介
Gabor變換屬于加窗傅立葉變換,Gabor函數(shù)可以在頻域不同尺度、不同方向上提取相關(guān)的特征。Gabor 濾波器的頻率和方向類似于人類的視覺系統(tǒng),所以常用于紋理識別。在空間域,二維Gabor濾波器是一個高斯核函數(shù)和正弦平面波的乘積,具體的:
復(fù)數(shù):
實部:
虛部:
...
最近弄人臉識別,用到Gabor卷積核,但網(wǎng)上的代碼似乎沒有和我心意的,于是參考了自己寫了下!參考了Zhou Mian以及matlab的Gabor實現(xiàn)代碼的代碼。雖然OpenCV的imporc下面有個gabor.cpp,但那個是一般形式的公式,不是用來做人臉識別的,可以參考文獻A
review on Gabor wavelets for face recognition,又說到。上代碼和鏈接地址...
檢測輪廓時我們使用canny邊沿檢測算法,這個算法其實也是基于梯度的。但是,與傳統(tǒng)的梯度算法求邊沿不同的是:
1.它可以精確的定位邊沿的位置。通過沿幅角方向檢測模值的極大值點,即邊緣點,遍歷8個方向圖像像素,把每個像素偏導(dǎo)值與相鄰像素的模值比較,取其MAX值為邊緣點,置像素灰度值為0。這樣做的結(jié)果使得邊沿非常細。
2.雙閾值檢測。通常一個較小的閾值會保留很多邊沿,他們中的一部分是沒有用... |
|