หน้าแรก
หน้าแรก
ใน OpenCV เราสามารถใส่ข้อความในภาพโดยใช้ฟังก์ชัน puttext() ฟังก์ชันนี้กำหนดไว้ใน หัวข้อ. ในการใส่ข้อความลงในรูปภาพ ก่อนอื่นเราต้องประกาศเมทริกซ์ที่จะโหลดรูปภาพ แทนที่จะโหลดรูปภาพในโปรแกรมของเรา เราได้เติมเมทริกซ์ด้วยสีขาว แล้วเราก็ใส่ข้อความในเมทริกซ์นั้น เราจำเป็นต้องกำหนดจุดเริ่มต้นของข้อความในเ
ในภาพระดับสีเทา ค่าพิกเซลเป็นค่าตัวเลขเดียว แต่ในภาพสี เช่น ภาพ RGB พิกเซลเป็นเวกเตอร์ที่มีสามค่า ค่าทั้งสามนี้แสดงถึงสามช่อง ที่นี่เราจะสร้างฟังก์ชันที่เข้าถึงทั้งภาพระดับสีเทาและค่าพิกเซลภาพ RGB และสุ่มเพิ่มจุดรบกวนให้กับพิกเซลของภาพ จากนั้นเราเรียกใช้ฟังก์ชันภายในฟังก์ชัน main() เพื่อสังเกตผลลัพ
ในวิธีก่อนหน้า (วิธี at) เราจำเป็นต้องระบุประเภทรูปภาพขณะเข้าถึงค่าพิกเซล มีอีกวิธีหนึ่งที่ง่ายกว่าวิธี at เรียกว่าวิธีการเข้าถึงโดยตรง ในการเข้าถึงค่าพิกเซลโดยใช้วิธีนี้ เราจำเป็นต้องระบุประเภท Mat เช่น Mat, Mat, Mat เป็นต้น โปรแกรมต่อไปนี้สาธิตวิธีการเปลี่ยนค่าพิกเซลโดยใช้วิธีการเข้าใช้โดยตรงใน O
หากต้องการอ่านค่าของพิกเซลที่ระบุ เราสามารถใช้วิธี at หรือ direct access เราจะได้เรียนรู้ทั้งสองแนวทางที่นี่ เริ่มต้นด้วยวิธี at โปรแกรมต่อไปนี้จะอ่านค่าพิกเซลที่ (10, 29) ของภาพ RGB ตัวอย่าง #include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace std; using namespace c
ในการประมวลผลภาพ เราทำการคำนวณบนภาพ เพื่อความเฉพาะเจาะจงมากขึ้น เราทำการคำนวณพิกเซล ดังนั้นยิ่งจำนวนพิกเซลสูงเท่าใด การคำนวณก็จะยิ่งเสียเวลามากขึ้นเท่านั้น เพื่อลดเวลาในการคำนวณ เราจำเป็นต้องสแกนภาพอย่างมีประสิทธิภาพ เราจะได้เรียนรู้วิธีใช้การวนรอบการสแกนรูปภาพอย่างมีประสิทธิภาพโดยใช้พอยน์เตอร์ ที่
OpenCV มีคลาส Mat iterator ที่เข้ากันได้กับ C ++ STL การใช้คลาส Mat iterator เราสามารถเข้าถึงพิกเซลได้อย่างง่ายดายมาก เราต้องสร้างวัตถุของคลาส Mat iterator เราสามารถทำได้เป็น Mat_::iterator example เราต้องใช้ขีดล่างหลัง Mat เช่น Mat_ เพราะเป็นวิธีเทมเพลต ในวิธีนี้ ต้องระบุประเภทการส่งคืนขณะสร้างอ็อบ
การเปลี่ยนความสว่างหมายถึงการเปลี่ยนค่าของพิกเซล หมายถึงการบวกหรือลบค่าจำนวนเต็มด้วยค่าปัจจุบันของแต่ละพิกเซล เมื่อคุณเพิ่มค่าจำนวนเต็มกับทุกพิกเซล หมายความว่าคุณกำลังทำให้ภาพสว่างขึ้น เมื่อคุณลบค่าคงที่บางค่าออกจากพิกเซลทั้งหมด คุณกำลังลดความสว่างลง อันดับแรก เราจะเรียนรู้วิธีเพิ่มความสว่าง และอย่า
วิธีการลดความสว่างจะคล้ายกันมากกับการเพิ่มความสว่าง ข้อแตกต่างเพียงอย่างเดียวคือการลบ สเกลาร์ (B, G, R) ออกจากรูปภาพ เรากำลังลบค่าสเกลาร์เพื่อลดความสว่าง โปรแกรมต่อไปนี้แสดงวิธีลดความสว่างของรูปภาพใน OpenCV ตัวอย่าง #include<iostream> #include<opencv2/highgui/highgui.hpp> using namespac
การเปลี่ยนความสว่างและคอนทราสต์เป็นเอฟเฟกต์การแก้ไขบ่อยครั้งในการประมวลผลภาพ ที่นี่ เราจะเรียนรู้วิธีเปลี่ยนคอนทราสต์ของรูปภาพ คอนทราสต์ควบคุมความคมชัดของภาพ ยิ่งคอนทราสต์สูง รูปภาพยิ่งคมชัด ลดคอนทราสต์ยิ่งปกปิดภาพ การเปลี่ยนความคมชัดหมายถึงการเพิ่มน้ำหนักของพิกเซล ยิ่งคอนทราสต์มาก ภาพก็ยิ่งคมชัด ห
ฮิสโตแกรมแสดงถึงความเข้มของความลึกของภาพ ตัวอย่างเช่น พิจารณารูปภาพที่มีความลึกของสี 8 บิต หมายความว่าทุกพิกเซลสามารถมีความลึกของสีได้ตั้งแต่ 0 ถึงค่าเฉลี่ยตั้งแต่ 0 ถึง 255 หากรูปภาพเป็นภาพ RGB จะมีช่องสีแดง สีเขียว และสีน้ำเงิน ตัวอย่างเช่น ที่จุดของภาพ มีเพียงสีแดงเท่านั้น จากนั้นความลึกของสีของภ
ฮิสโตแกรม ของรูปภาพแสดงความถี่ของค่าความเข้มของพิกเซล ในฮิสโตแกรมของรูปภาพ แกน X จะแสดงระดับสีเทา และแกน Y แสดงความถี่ของความเข้มเหล่านี้ การปรับสมดุลฮิสโตแกรม ปรับปรุงความคมชัดของภาพเพื่อขยายช่วงความเข้มออก คุณสามารถปรับฮิสโตแกรมของรูปภาพที่กำหนดโดยใช้ equalizeHist() ฟังก์ชัน . ไวยากรณ์พื้นฐานของ
ที่นี่ เราจะเข้าใจวิธีเข้าถึงกล้องเริ่มต้นและแสดงสตรีมวิดีโอจากกล้องนั้น ในแล็ปท็อป เว็บแคมแบบตายตัวคือกล้องเริ่มต้น ในเดสก์ท็อป กล้องเริ่มต้นจะขึ้นอยู่กับลำดับของพอร์ตอนุกรมที่กล้องเชื่อมต่ออยู่ เมื่อเราต้องการจับภาพสตรีมวิดีโอจากเว็บแคมเริ่มต้น เราไม่จำเป็นต้องรู้อะไรเกี่ยวกับกล้องและตรวจสอบให้แน่
ในหัวข้อนี้ เราจะพิจารณาวิธีใช้ OpenCV เพื่อจับภาพวิดีโอจากกล้องอื่น การเข้าถึงกล้องอื่นที่ไม่ใช่กล้องเริ่มต้นจะคล้ายกับการเข้าถึงกล้องเริ่มต้น มีข้อแตกต่างเพียงอย่างเดียวคือแทนที่จะใช้ VideoCapture cap(0) เราต้องกำหนดหมายเลขกล้อง หมายเลขกล้องจะเป็นไปตามลำดับของพอร์ต USB หากกล้องเชื่อมต่อกับพอร์ต US
ในหัวข้อนี้ เราจะรู้วิธีโหลดไฟล์วิดีโอและเล่นโดยใช้ OpenCV และเราต้องใช้วิธีการที่คล้ายกันที่เราได้เรียนรู้ในหัวข้อที่แล้ว ข้อแตกต่างเพียงอย่างเดียวคือแทนที่จะใส่ตัวเลขเป็นอาร์กิวเมนต์ของวัตถุของคลาส VideoCapture และเราต้องใส่เส้นทางของวิดีโอ โปรแกรมต่อไปนี้สาธิตวิธีการโหลดวิดีโอจากคอมพิวเตอร์ของคุ
เราใช้คลาส set() ของ OpenCV การใช้คลาส set() เราสามารถกำหนดความสูงและความกว้างของเฟรมได้ บรรทัดต่อไปนี้กำลังกำหนดความสูงและความกว้างของวิดีโอในโปรแกรมของเรา set(CAP_PROP_FRAME_WIDTH, 320); set(CAP_PROP_FRAME_HEIGHT, 240); บรรทัดแรกกำหนดความกว้างของเฟรมเป็น 320 พิกเซล และบรรทัดที่สองกำหนดความสูงขอ
เมื่อเราต้องการจัดเก็บวิดีโอ เราต้องกำหนดตำแหน่งที่เราต้องการจัดเก็บ จากนั้นเราต้องระบุ FourCC FourCC ย่อมาจาก Four Character Code เป็นลำดับของอักขระ 4 ไบต์ที่ระบุรูปแบบข้อมูล นอกจากนี้เรายังต้องประกาศ FPS เพื่อจัดเก็บวิดีโอและขนาดเฟรมก็จำเป็นสำหรับกระบวนการจัดเก็บนี้ โปรแกรมต่อไปนี้ใช้สตรีมวิดีโอแบ
เราจะเรียนรู้วิธีคำนวณจำนวนเฟรมทั้งหมดใน OpenCV การใช้ OpenCV เป็นพื้นฐานในการนับและแสดงจำนวนเฟรมทั้งหมดของวิดีโอ อย่างไรก็ตาม คุณต้องจำไว้อย่างหนึ่งว่าเราไม่สามารถนับจำนวนเฟรมวิดีโอแบบเรียลไทม์ทั้งหมดได้ เนื่องจากวิดีโอเรียลไทม์ไม่มีจำนวนเฟรมที่แน่นอน โปรแกรมต่อไปนี้จะนับจำนวนเฟรมทั้งหมดและแสดงในห
เฟรมปัจจุบันหมายความว่าคุณกำลังเล่นวิดีโอและเฟรมที่แสดงอยู่ในขณะนี้คือเฟรมปัจจุบัน เรียกอีกอย่างว่าเฟรมที่ใช้งานอยู่ ในหลาย ๆ แอปพลิเคชัน คุณสามารถกำหนดให้มีหมายเลขของเฟรมปัจจุบันได้ โปรแกรมต่อไปนี้จะอ่านตำแหน่งของเฟรมปัจจุบันและแสดงในหน้าต่างคอนโซล ตัวอย่าง #include<opencv2/opencv.hpp>//Open
เราจะเข้าใจวิธีการคำนวณเวลาที่ผ่านไปโดยใช้ OpenCV โปรแกรมต่อไปนี้คำนวณเวลาที่ผ่านไปใน OpenCV โดยใช้ C++ ตัวอย่าง #include<opencv2/opencv.hpp>//OpenCV header to use VideoCapture class// #include<iostream> using namespace std; using namespace cv; int main() { Mat myImage;//De
เพื่อให้ได้ค่า FPS เราใช้คำสั่ง get() และ CAP_PROP_FPS เป็นอาร์กิวเมนต์ของ get() อาร์กิวเมนต์นี้ส่งคืน FPS ในรูปแบบจำนวนเต็ม เมื่อเริ่มต้นโปรแกรม เราได้นำตัวแปรจำนวนเต็มชื่อ FPS จากนั้นเราใช้ FPS =cap.get(CAP_PROP_FPS); เพื่อเก็บค่า FPS ไว้ในตัวแปร โปรแกรมต่อไปนี้รับ FPS ของวิดีโอและแสดงในหน้าต่าง