Saturday, April 13

How to use ImageBox control

ImageBox คือ เครื่องมือในการสร้างพื้นที่การแสดงภาพ คล้ายๆ กับ PictureBox แต่ ต่างกันตรงที่ ImageBox นั้นมีฟังก์ชั่นเพิ่มเติมในการจัดการรูปภาพติดมาด้วย นอกจากนี้ เรายังสามารถกำหนดให้ ImageBox มีคุณสมบัติเทียบเท่า หรือมากกว่า PictureBox ได้เช่นกัน  ซึ่งนับว่ายืดหยุ่นกว่า PictureBox แบบเก่าๆ

แต่ ก่อนที่เราจะเรียกใช้ ImageBox ได้ เราจะต้องทำการเพิ่ม Control ตัวนี้เข้ามาในหน้าต่างของ Visual C# ซะก่อน ทำตามขั้นตอนดังนี้

คลิกขวา เลือก Choose Items.... ที่บริเวณพื้นที่ว่างของ หน้าต่าง Toolbox

Toolbox

ะปรากฏหน้าต่าง Choose Toolbox Items ให้ทำการคลิก Browse แล้วเลือกไฟล์ 'Emgu.CV.UI.dll' จาก C:\Emgu\emgucv-windows-x86-gpu 2.4.2.1777\bin หรือที่เราติดตั้ง emgu ไว้

จากนั้น เลื่อนหา ImageBox เมื่อเจอแล้ว ให้ทำการเช็คบอกซ์ แล้วกด OK

Choose Toolbox Items

กลับมาที่ Toolbox จะปรากฏ ImageBox control ขึ้นมา ให้ลากมาวางบนพื้นที่ว่างบนฟอร์ม ปรับแต่งขนาดให้เหมาะสม ทดสอบรันโปรแกรม

ImageBox control

นอกจากนี้ เราสามารถกำหนดคุณสมบัติของ ImageBox ได้ด้วย ในระหว่างการพัฒนา และการปล่อยซอร์ฟแวร์ให้ลูกค้าใช้ เราอาจะเปิดฟังก์ชั่นบางอย่างเท่านั้น  ด้วยการใช้ preprocessor กำหนดค่า เช่น

#if DEBUG
imageBox1.FunctionalMode = ImageBox.FunctionalModeOption.Everything;
#else
imageBox1.FunctionalMode = ImageBox.FunctionalModeOption.PanAndZoom;
#endif

ถ้าเราไม่ได้อยู่ในโหมด Debug ให้ ImageBox มีแค่ ฟังก์ชั่นการ ซูม เท่านั้น 

ลองนำไปประยุกต์กันดูนะัครับ ขอให้สนุกกับ Emgu

อ้างอิง http://www.emgu.com/wiki/index.php/ImageBox

อ่านเพิ่มเติม...

Sunday, April 7

How to implement property sheet to other project in Visual C++

เราสามารถก๊อปปี้ค่าต่างๆ ใน Project Properities จากงานที่เราเคยกำหนดค่าไว้แล้ว มาใช้ใน Project ใหม่ได้ จะทำให้เราสามารถที่จะสร้างโปรเจคได้เลย โดยไม่ต้องไปกำหนดที่ Project Properties ทุกครั้งที่เราสร้างโปรเจคใหม่

เช่นงาน HelloOpenCV ที่เราได้กำหนด Project Properties path การเรียกใช้ library และการดึงไฟล์ dll เข้ามาร่วมในโปรเจคของเรา หากเรามีการสร้างไฟล์ Property sheet ไว้ก่อนแล้ว เราสามารถ add property sheet เข้ามาในโปรเจคใหม่ของเราได้เลย ซึ่งจะทำให้ path ต่างๆ ที่เคยกำหนดไว้ที่ C/C++ และ Linker ถูกกำหนดไว้อย่างเรียบร้อย ช่วยลดเวลาความยุ่งยากในการสร้างโปรเจคบน Visual C++ ได้เป็นอย่างดี เรามาดูกันครับว่าทำอย่างไร


ก่อนอื่น เราจะต้องสร้างไฟล์ properity sheet ขึ้นมาก่อน โดยจะอยู่ที่ tab property manager ซึ่งบางเครื่อง อาจจะยังไม่ปรากฏ tab นี้ ให้เราไปที่เมนู Tools->Settings->Expert Settings จะปรากฏ tab property manager ด้านล่าง

open tab property manager

 

Property manager tab bar

ในวีดีโอ ผมได้ทำการสร้างไฟล์ properity sheet โดยอาศัยจากโปรเจค HelloOpenCV ก่อน โดยให้เก็บไฟล์ OpenCVPropertiesDebug.props และไฟล์ OpenCVPropertiesRelease.props ไว้แยกต่างหาก จากโฟวเดอร์โปรเจคเรา จากนั้นกำหนดค่า ตามที่เราเคยได้กำหนดจากตัวอย่างก่อนหน้านี้  เรียบร้อยแล้วให้ทำการบันทึกไฟล์ทั้งสอง

ต่อจากนั้น เมื่อเราทำการ add new project เข้าไปใน  project solution ของเราให้ทำการไปเพิ่มไฟล์ property sheet เข้าไปที่ debug และ release ใน tab property manager ในโปรเจคที่เราสร้างใหม่

เมื่อเรามาทำการเขียนโค๊ด C++ ตอนที่เราสั่ง #include <cv.h> สังเกตได้ว่า Visual C++ IDE จะมองหา path ตามที่เราได้เพิ่มไฟล์ property sheet ตามที่เราได้กำหนดไว้ให้อัตโนมัติ

ง่ายไหมหล่ะครับ ทีนี้เวลาเราสร้างโปรเจคใหม่ขึ้นมา เราก็สามารถเพิ่มไฟล์ property sheet เข้าไป ทีเหลือ ก็ไม่ต้องไปกำหนดค่าอะไรให้วุ่นวายอีก จากนั้นก็บรรเลงเพลงโค๊ด C++ เราได้เลย

ขอให้สนุกกับ OpenCV นะครับ

อ่านเพิ่มเติม...
 

แจกฟรี พื้นที่ฝากไฟล์ 2 GB

ads

ติดตามข่าวสารผ่าน Twitter

ติดตาม Blog นี้

Blog อื่นๆของฉัน

  • Test AMR Fleet Management program - ระบบบริหารจัดการจราจรและจัดคิวงานของรถ AMR (Autonomous Mobile Robot) ที่พัฒนาโดยบริษัท WP Solution Co., Ltd. จากภาษา C# ทั้งในส่วนของ Backend (Service app...
  • Gearset matching 2021 program - เป็นงานใหญ่ที่เพิ่งจบไป ที่ระยอง ปลวกแดง บริษัทผลิตชิ้นส่วนรถยนต์ คอนเซปต์ คือต้องการเก็บค่าหลังจากการทดสอบชิ้นส่วยรถยนต์ เพื่อเก็บไว้ในฐานข้อมูลให้แผนกถ...
  • RT ToolBox3 Standard version 1.70Y - กำลังศึกษาการใช้งานโปรแกรม RT ToolBox3 ในการเขียนโปรแกรมเพื่อควบคุมแขนกล Robots-MELFA ของค่าย Mitsubishi Facebook link
  • Free Screen Capture โปรแกรมบันทึกหน้าจอ ฟรีๆ - หากเพื่อนๆ จะมองหาโปรแกรม ที่ไว้สำหรับบันทึกหน้าจอคอมพิวเตอร์ ไม่ว่าจะบันทึกในรูปของภาพนีิ่ง (Screen shot) หรือแบบบันทึกเป็นภาพเคลื่อนไหว ( screencas...

จำนวนการเยี่ยมชมบล๊อก