討論區快速選單
知識庫快速選單
網路投保旅行平安險 傑米的攝影旅遊筆記 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
如何計算Moment invariants
更改我的閱讀文章字型大小
作者 : hahn9999(小鈦大無敵)
[ 貼文 10 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/2/28 下午 11:53:36
大家好
小弟我要計算一張影像的Moment invariants
我是利用OPENCV內的一些函式去計算
可是當我做到最後一部分的時候

也就是這裡=> cvGetHuMoments(CvMoments* moments, CvHuMoments* hu moments)

CvHuMoments* hu moments的部分我不知道要放什麼參數!!

第二個問題:

我要如何才可以看到那7個的結果數值??
是他自己會顯示還是我要自己使用類似 printf()
去把它顯示出來?
如果是的話可以跟我說一下怎麼寫才好嗎?

以下為我的程式碼:

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

// 初始資料的宣告 //

IplImage *src = NULL;
IplImage *tmp = NULL;


uchar Y[640][480];
uchar Cr[640][480];
uchar Cb[640][480];

using namespace System;

int main(array<System::String ^> ^args)
{
src = cvLoadImage("C:/Users/hahn9999/Documents/Visual Studio 2008/Projects/Moment/Moment/hand1.jpg",0);
tmp = cvCreateImage(cvGetSize(src),src->depth,src->nChannels);

cvNamedWindow("src",0);
cvShowImage("src",src);

cvThreshold( src, tmp, 140, 255, CV_THRESH_BINARY_INV );

cvNamedWindow("binary",0);
cvShowImage("binary",tmp);

CvMoments moments; //Moments 變數宣告//

cvMoments(tmp,&moments,0);

// 得到空間力矩 //
double m00, m10, m01;

m00 = cvGetSpatialMoment(&moments, 0,0);
m10 = cvGetSpatialMoment(&moments, 1,0);
m01 = cvGetSpatialMoment(&moments, 0,1);

double moment_x = m10/m00;
double moment_y = m01/m00;

// 得到中心力矩 //

double U00, U10, U01;

U00 = cvGetCentralMoment(&moments, 0,0);
U10 = cvGetCentralMoment(&moments, 1,0);
U01 = cvGetCentralMoment(&moments, 0,1);

// 正規化中心力矩 //

double n02,n03,n11,n12,n20,n21,n30;

n02 = cvGetCentralMoment(&moments,0,2);
n03 = cvGetCentralMoment(&moments,0,3);
n11 = cvGetCentralMoment(&moments,1,1);
n12 = cvGetCentralMoment(&moments,1,2);
n20 = cvGetCentralMoment(&moments,2,0);
n21 = cvGetCentralMoment(&moments,2,1);
n30 = cvGetCentralMoment(&moments,3,0);

// 計算7個結果 //

double s1,s2,s3,s4,s5,s6,s7;

cvGetHuMoments(&moments, CvHuMoments* hu moments);

cvWaitKey(0);

cvReleaseImage(&src);
cvReleaseImage(&tmp);
cvDestroyWindow("src");
cvDestroyWindow("binary");
return 0;
}

作者 : chungyen(chungyen)
[ 貼文 1 | 人氣 0 | 評價 30 | 評價/貼文 30 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人hahn9999註記此篇回應為最佳解答 2010/9/29 下午 02:03:44
第一個問題用這個去接 CvHuMoments HuMoments;


第二個問題:這樣就可以印出 7hu
printf("h1=%e\nh2=%e\nh3=%e\nh4=%e\nh5=%e\nh6=%e\nh7=%e",
   HuMoments.hu1,HuMoments.hu2,HuMoments.hu3,HuMoments.hu4,HuMoments.hu5,HuMoments.hu6,HuMoments.hu7);

 板主 : 徵求中
 > 影像處理與計算機圖學 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 影像處理與計算機圖學 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
影像處理與計算機圖學
1 Linkin 780 
2 CrazyStar 400 
3 青衫 360 
4 白老鼠(Gary) 330 
5 悠悠深藍 220 
6 none 220 
7 shou 200 
8 ultra 200 
9 ghost 140 
10 ozzy 130 
影像處理與計算機圖學
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125