2022年12月6日 星期二

c# Emgu WebCAM 影像應用(二)-影像標的物旋轉定位

接續c# Emgu WebCAM 影像應用(一)-影像物體顏色追蹤這篇文章配合旋轉台,將ROI中的影像顏色的標的物角度旋轉到90度的正向位置.

旋轉台是用RS232控制的架構

_Port[PortID] = new SerialPort(PortNumber, BaudRate, Parity.None, 8, StopBits.One);

MCvBox2D rect;

rect = currentContour.GetMinAreaRect();

這個函式GetMinAreaRect會包含角度的值 rect.angle

再依據angle的值去控制轉台旋轉到此角度達到所要需求.

演示影片



2022年12月5日 星期一

c# Emgu WebCAM 影像應用(一)-影像物體顏色追蹤


編寫環境:

OS: Win 11

C#: VS2010

EMGU:2.4.10

構想: 利用滑鼠down->move->up在圖形上的事件, 抓取ROI區塊上的顏色, 進而去判斷整個影像中相對應的顏色物件並將其以最小矩形框出.

利用滑鼠的事件

private void imageBox1_MouseDown(object sender, MouseEventArgs e)

private void imageBox1_MouseMove(object sender, MouseEventArgs e)

private void imageBox1_MouseUp(object sender, MouseEventArgs e)

去抓取imageBox1中的ROI區塊的影像去做處理

利用到的函式

// bgr 轉 hsv

TEmgu._EmguPara.TouchRegionHsv = CommonData.ROIImageSource.Convert<Hsv, Byte>();

TEmgu._EmguPara.TouchRegionHsv.SmoothGaussian(5);

TEmgu._EmguPara.m_Lower = new Hsv(TEmgu._EmguPara.m_TargetColor.Hue - 30, TEmgu._EmguPara.m_TargetColor.Satuation - 30, TEmgu._EmguPara.m_TargetColor.Value - 30);

TEmgu._EmguPara.m_Higher = new Hsv(TEmgu._EmguPara.m_TargetColor.Hue + 30, TEmgu._EmguPara.m_TargetColor.Satuation + 30, TEmgu._EmguPara.m_TargetColor.Value + 30);

//搜尋的顏色範圍

TEmgu._EmguPara.InRageFrame = TEmgu._EmguPara.ImageHsv.InRange(TEmgu._EmguPara.m_Lower, TEmgu._EmguPara.m_Higher);

//抓取ROI顏色的最小矩形

using (MemStorage storage = new MemStorage()) 

{

         for (Contour<Point> contours = TEmgu._EmguPara.InRageFrame.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_NONE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_EXTERNAL, storage); contours != null; contours = contours.HNext)

        {

                  Contour<Point> currentContour = contours.ApproxPoly(contours.Perimeter * 0.010, storage);

                  if (currentContour.BoundingRectangle.Width < 10 ||                                                  currentContour.BoundingRectangle.Height < 10)                //对于太小的外接矩形,删除掉

                  {

                          continue;

                   }

                   if (currentContour.BoundingRectangle.Width > 50 && currentContour.BoundingRectangle.Height > 50)

                  {

                                TEmgu._EmguPara.ImageSource.Draw(currentContour.GetMinAreaRect(), new Bgr(0, 0, 255), 1);

                                MCvBox2D rect;

                                rect = currentContour.GetMinAreaRect();

                                CommonData.Angle = rect.angle;

                                cnti++;

                    }

           }

}

Figure1:WebCAM and 旋轉結構

Figure2:實際WebCAM環境
Figure3:WebCAM即時影像
演示效果

2022年3月6日 星期日

產品自動化測試工程人員工作技能

最近就業博覽會又開始了所以寫一些本身從事這工作的建議給想從事產品測試工作的人! 
首先一間公司的產品要問市銷售 
1. 要從業務面的規劃與客戶需求來設計公司的產品 
2. 研發設計 
3. 生產製造 
4. 品保維修 
 所以在產品測試人員就位於3. 生產製造的環節上 
而想接觸這一些工作的人需要有哪一些基本的技能呢? 
最重要的我覺得是興趣因為有一些公司會引進新血從頭訓練 
所以若沒興趣工作起來可能會有倦怠感 
若想多爭取一些薪資空間就必須要具備一些軟硬體的技能 
硬體方面要會 
1. 看懂線路圖如Orcad一些繪製電路圖的軟體都可 跟零件的datasheet
2. 控制板的應用例如:利用arduino或樹莓派做治具控制 
3. 儀器操作:電源供應器 示波器 三用電表 
軟體方面:至少要會一種可以規劃GUI的程式語言如c# VC VB python等等

2021年11月16日 星期二

ESP32 + PIR + servo motor 充電式非接觸性感應垃圾桶

以手上ESP32板子為主架構搭配PIR HC-SR505 sensor感應去控制servo motor旋轉角度另添加一塊充電模組可以完成一個感應垃圾桶!!

Figure1 PIR HC-SR505

Figure2 充電鋰電池

Figure3 ESP32
                                                                   

Figure4 充電板
Figure5 整體架構

演示影片