Robofun 機器人論壇
標題:
cmos 辨識 跪求 一問
[打印本頁]
作者:
a7710184
時間:
2010-3-18 21:22
標題:
cmos 辨識 跪求 一問
我現在 已有辦法 讓影像在lcd上顯示 但今天 我想 鏡頭看到三角形物體 亮紅燈 看到正方形物體亮綠燈 我該怎做 我是用凌陽的 spce3200 請各位大師幫開一道路吧><
作者:
mzw2008
時間:
2010-3-18 22:44
spce3200 ....
這應該是一塊主機板吧
所以你用攝影機抓了圖片顯示在LCD了?
想辨識三角形和四邊型?
這題目得看影像的樣子是如何
形狀有沒有重疊的可能
顏色是否一樣或是不同
大小會不會改變, 還是統一大小?
物體會不會擺正
作法都不一樣喔
作者:
a7710184
時間:
2010-3-19 14:49
回復
2#
mzw2008
對他是一塊時習板 我買了他的COMS模組ov7720
我的想法很簡單 大小一致 顏色一致 只有 分方形 跟三角形 我都是用保麗龍做的
只要他她能判別哪個是方形 哪個是三角形 輸出訊號就可以了(到時候因該會給訊號到bs2控制機械手臂或只是簡單的亮燈) 這邊我實在不知如何做
我強在伺服機控制~~
拜託你們指點我哩^^ 我想畢業><
作者:
abcd1234abcd
時間:
2010-3-19 15:30
請問大小一致是邊長的大小一致
還是面積的大小一致
邊長大小一致比較簡單的方法就是看面積的大小
反過來說面積大小一致最簡單的方法就是看邊長大小
作者:
a7710184
時間:
2010-3-19 16:01
簡單來說 EX我現在 有一個 2CM*2CM的方形 一個底2CM 高2CM 的三角形 這我要怎讓他去判別 有範例程式嗎 我找了好機天 都只有顏色辨識><
作者:
abcd1234abcd
時間:
2010-3-19 17:55
這個就看面積就能知道了
方型面積一定會比三角型大
作者:
a7710184
時間:
2010-3-19 19:27
那我該怎寫c 讓他去判斷面積 這方面我不會的說><
作者:
vegewell
時間:
2010-3-19 19:37
辯別是否 2CM*2CM的方形只要讀取矩形(要從中心點y軸水平左右移動測試)的四角是否相同的RGB圖素,
辯別是否一個底2CM 高2CM 的三角形則是頂點之列和底部之列去比較RGB圖素即可,
看你是使用什麼語言,
如果有用到directx sdk,就有更簡單的方式,
請參考人臉偵測的 c#範例程式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using AForge.Imaging.Filters;
using AForge.Math;
using AForge.Imaging;
namespace i_rely_solely_on_god
{
class Face_Detection
{
//Define variable for Convert RGB 2 YCBCR
//double Y = 0;
//double Cb = 0;
double Cr = 0;
int R = 0;
int G = 0;
int B = 0;
int r = 0;
int Testdetection, WPresentdetection = 0;
int BPresentdetection1 = 0;
AForge.Math.Histogram activeHistogram = null;
//Main function for face detection
public int[] FaceDetection(Form1 Main, PictureBox PicFirst, PictureBox Picresult,TextBox TWskin,PictureBox face,TextBox TBskin)
{
Testdetection = 0;
Graphics hh = PicFirst.CreateGraphics();
Bitmap PreResult = new Bitmap(PicFirst.Image);
Bitmap Result = new Bitmap(PicFirst.Width, Picresult.Height);
Bitmap HisResult = new Bitmap(PicFirst.Width, Picresult.Height);
Bitmap Template50 = new Bitmap("sample50.bmp");
Bitmap Template25 = new Bitmap("sample25.bmp");
Bitmap facee = new Bitmap(face.Width, face.Height);
for (int i = 0; i < PicFirst.Width; i++)
{
for (int j = 0; j < PicFirst.Height; j++)
{
//Getting red layer
R = PreResult.GetPixel(i, j).R;
//Getting green layer
G = PreResult.GetPixel(i, j).G;
//Getting blue layer
B = PreResult.GetPixel(i, j).B;
//Formula for convert RGB 2 YCBCR
//Y = 0.299 * R + 0.587 * G + 0.114 * B;
//Cb = -0.169*R - 0.332*G + 0.500*B;
Cr = 0.500 * R - 0.419 * G - 0.081 * B;
//Ckeck for "-" values(Because we can't use "-" values for RGB color)
if (Cr < 0)
//Convert to Positive values
Cr =0;
HisResult.SetPixel(i, j, Color.FromArgb((int)Cr, (int)Cr, (int)Cr));
if (Cr > 10)
//Convert to Positive values
Cr = 255;
//if (Cr>20)
// //Convert to Positive values
// Cr = Cr+128;
//Set the pixel by cr value
Result.SetPixel(i, j, Color.FromArgb((int)Cr, (int)Cr, (int)Cr));
}
}
//Create filter form my image
FiltersSequence processingFilter = new FiltersSequence();
//Detection the adges
processingFilter.Add(new Edges());
WPresentdetection=0;
BPresentdetection1= 0;
//Apply filter for my pic
Picresult.Image =processingFilter.Apply( Result);
//Detect face with big template
for (int d = 0; d <150-50; d+=20)
{
Testdetection = 0;
WPresentdetection = 0;
BPresentdetection1 = 0;
for (int c = 0; c <150-50; c+=20)
{
Testdetection = 0;
WPresentdetection = 0;
BPresentdetection1 = 0;
for (int w = 0; w < Template50.Width; w++)
{
for (int h = 0; h < Template50.Height; h++)
{
if (Template50.GetPixel(w, h).B == 255)
{
if (Result.GetPixel(d + w, c + h).B == Template50.GetPixel(w, h).B)
{
WPresentdetection++;
}
}
//if (Template50.GetPixel(w, h).B == 255)
//{
// if (Result.GetPixel(d + w, c + h).B == Template50.GetPixel(w, h).B)
// {
// BPresentdetection1++;
// }
//}
}
}
TWskin.Text = WPresentdetection.ToString();
TBskin.Text = BPresentdetection1.ToString();
if (WPresentdetection > 377)//&&BPresentdetection1>1579)
{
hh.DrawRectangle(new Pen(Color.Red), d, c,60, 60);
for (int i = 0; i < 60; i++)
{
for (int j = 0; j< 60; j++)
{
r = PreResult.GetPixel(i + d, j + c).R;
facee.SetPixel(i, j, Color.FromArgb((int)r, (int)r, (int)r));
face.Image = facee;
}
}
TWskin.Text = WPresentdetection.ToString();
TBskin.Text = BPresentdetection1.ToString();
WPresentdetection = 0;
BPresentdetection1 = 0;
Testdetection = 1;
break;
}
// Detect face with small template
//else
//{
// Testdetection = 0;
// WPresentdetection = 0;
// for (int w = 0; w < Template25.Width; w++)
// {
// for (int h = 0; h < Template25.Height; h++)
// {
// if (Result.GetPixel(d + w, c + h).B == 255)
// {
// if (Result.GetPixel(d + w, c + h).B == Template25.GetPixel(w, h).B)
// {
// WPresentdetection++;
// }
// }
// }
// }
// if (WPresentdetection > 50)
// {
// hh.DrawRectangle(new Pen(Color.Red), d, c, 30, 30);
// for (int i = 0; i < 30; i++)
// {
// for (int j = 0; j < 30; j++)
// {
// r = PreResult.GetPixel(i + d, j + c).R;
// facee.SetPixel(i, j, Color.FromArgb((int)r, (int)r, (int)r));
// face.Image = facee;
// }
// }
// TWskin.Text = WPresentdetection.ToString();
// WPresentdetection = 0;
// Testdetection = 2;
// break;
// }
//}
}
if (Testdetection == 1 || Testdetection == 2)
{
WPresentdetection = 0;
BPresentdetection1=0;
Testdetection = 0;
break;
}
}
//Draw histogram
AForge.Imaging.ImageStatistics stat =
new AForge.Imaging.ImageStatistics(HisResult);
if (stat != null)
{
//Do if the pic is gray
if (stat.IsGrayscale)
{
activeHistogram = stat.Red;
}
//Do if the pic is colourful
if (!stat.IsGrayscale)
{
作者:
a7710184
時間:
2010-3-19 19:52
OKOK 我去嘗試看看 各位大大有更好的意見 可以說出來喔^^
你們人真好~~~
作者:
vegewell
時間:
2010-3-19 20:02
被截掉一些
補足 :
//Do if the pic is colourful
if (!stat.IsGrayscale)
{
activeHistogram = stat.Red;
}
}
return (activeHistogram.Values);
}
}
}
作者:
a7710184
時間:
2010-3-21 15:14
我只要在我的程式上 補上人臉辨識 就可以了嗎 這幾天 在那研究 研究不太出來耶 可以給我註解嗎>< 感謝
作者:
vegewell
時間:
2010-3-23 16:54
下載了以下三個網頁裡的範例程式,這樣還畢不了業,那就-----,(你老師太扯了)
http://www.codeproject.com/KB/cs/Face_Detection_processing.aspx
-----------------------------------------------------------------------
http://www.codeproject.com/KB/au ... n_detection_wc.aspx
--------------------------------------------------
http://www.helloapps.com/AI/
作者:
a7710184
時間:
2010-3-26 16:33
哈哈 vegewell 謝辣 感謝你阿~~
作者:
b63212002
時間:
2011-6-8 22:03
請問SPCE3200 ADC 可以和視窗程式做搭配嗎?
作者:
g921002
時間:
2011-6-8 23:45
以前看過ㄧ篇日文的論文提過,用面積跟週長比可以去判斷已知形狀。只要你要辨識的東西很固定,這種方法會很容易做而且辨識能力很強建。
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2