Агуулгын хүснэгт:

OpenCV ашиглан Python дээр өнгө илрүүлэх: 8 алхам
OpenCV ашиглан Python дээр өнгө илрүүлэх: 8 алхам

Видео: OpenCV ашиглан Python дээр өнгө илрүүлэх: 8 алхам

Видео: OpenCV ашиглан Python дээр өнгө илрүүлэх: 8 алхам
Видео: Computer Vision with Python! Resizing Images 2024, Долдугаар сарын
Anonim
Image
Image

Сайн уу? Энэхүү заавар нь openCV номын санг ашиглан python дээрх дүрсээс тодорхой өнгийг хэрхэн гаргаж авах талаар заавар өгөхөд ашиглагддаг. Хэрэв та энэ техникийг шинээр ашиглаж байгаа бол санаа зовох хэрэггүй, энэ гарын авлагын төгсгөлд та өөрийн өнгө илрүүлэх програмыг програмчлах боломжтой болно.

Дараахь функцууд эсвэл таны сурах техникийг бид хэлж чадна.

1. Зургийг хэрхэн унших

2. Track Bars хэрхэн үүсгэх

3. Замын зурвас ашиглан Hue, Saturation болон зургийн утгыг хэрхэн тохируулах вэ

4. Дараа нь таны эцсийн гаралт байх болно

Та миний хавсаргасан гаралтын видеог үзэх боломжтой.

Тиймээс эхэлцгээе

Хангамж

  • Python 3
  • openCV номын сан
  • numpy номын сан

Алхам 1: Номын санг импортлох

Номын санг импортлох
Номын санг импортлох

Зураг нь үзүүлсэн шиг шар феррари хэлбэртэй бөгөөд бид энэ дүрснээс зөвхөн шар өнгийг гаргаж авахаар програмчлах болно

Эхний алхам бол манай номын санг импортлох явдал юм

1. OpenCV номын санг багтаасан болно. Үүнийг питон хэл дээр cv2 гэж нэрлэдэг

2. numpy номын санг np гэж оруулах. "As" нь бидэнд np гэж numpy хийх боломжийг олгодог тул дахин дахин numpy бичих шаардлагагүй болно

Алхам 2: Зам мөр үүсгэх

Зам мөр үүсгэх
Зам мөр үүсгэх

Track Bar нь зураг дээрх Hue, Saturation ба Value -ийн утгыг тохируулах зорилгоор бүтээгдсэн болно.

cv2.namedWindow ("TrackBars") Энэ мөрийн мөр нь шинэ гаралтын цонх үүсгэхэд ашиглагддаг бөгөөд цонхны нэрийг TrackBars хэлбэрээр өгдөг (Та хүссэн нэрээ өгч болно)

cv2.resizeWindow ("TrackBars", 600, 250) Энэ функц нь цонхны хэмжээг өөрчлөхөд хэрэглэгддэг. "TrackBars" нь аль цонхны хэмжээг өөрчлөхийг хүсч байгаа тул би TrackBars цонхны хэмжээг өөрчлөхийг хүссэн тул би энэ нэрийг бичсэн. Дараа нь хоёр бүхэл тоо байна. Эдгээр хоёр бүхэл тоо нь өргөн ба өндөр юм. Хэмжээг нь өөрчлөхийн тулд та эдгээр хоёр тоогоор тоглож болно

Алхам 3: Өнгө, ханалт, үнэ цэнийн хувьд TrackBars үүсгэх

Өнгө, ханалт, үнэ цэнийн хувьд TrackBars үүсгэх
Өнгө, ханалт, үнэ цэнийн хувьд TrackBars үүсгэх
Өнгө, ханалт, үнэ цэнийн хувьд TrackBars үүсгэх
Өнгө, ханалт, үнэ цэнийн хувьд TrackBars үүсгэх

Одоо бид өнгө, ханалт, үнэ цэнийн хувьд нийт 6 TrackBars үүсгэх болно. Тус бүр нь хамгийн багадаа 1, хамгийн ихдээ 1 гэсэн 2 байх болно. Бид openCV -ийн createTrackbar функцийг ашиглах болно. Эхлээд бид энэ функцын синтаксийг харах болно.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Энэ нь ойлгомжгүй байж магадгүй, гэхдээ бид алхам бүрийг даван туулах болно гэж бүү санаа зов. OpenCV -д өнгө 179, ханалт 255, утга 255 байна гэдгийг нэг зүйлийг санаарай.

1. Hue min -д TrackBar үүсгэх:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, хоосон)

Энэ Hue min-д trackbar нэр, TrackBars нь үндсэн цонх, 0 нь бидний гулсагч байх байрлал, 179 нь муж нь 0-179-ээс шилжих болно гэсэн үг юм.

2. Hue max -д зориулж TrackBar үүсгэх:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, хоосон)

Энэ Hue max-д trackbar нэр, TrackBars нь үндсэн цонх, 179 нь бидний гулсагч байх байрлал, 179 нь хамгийн их хүрээ нь silder нь 179-0-ээс шилжих болно гэсэн үг юм.

3. Үүнтэй адилаар зурагт үзүүлсэн шиг min, sat max, val min, val max гэсэн алхмуудыг давтана

Цагаан дэвсгэртэй зураг нь гаралтын дүрс юм. Таны зам мөр ийм харагдах болно

Алхам 4: Зургийг хэрхэн уншиж, хэмжээг нь өөрчлөх вэ

Зургийг хэрхэн уншиж, хэмжээг нь өөрчлөх вэ
Зургийг хэрхэн уншиж, хэмжээг нь өөрчлөх вэ

cv2.imread () нь зургийг унших боломжийг олгодог. Нэг чухал зүйл бол таны зургийн байршил програм хадгалагдсан хавтсанд байх ёстой гэдгийг санах хэрэгтэй. Бид while циклийг оруулах болно, учир нь энэ нь зургийг уншиж дуустал ажиллах ёстой эсвэл нөхцөл үнэн болтол хэлж чадна

img = cv2.imread ("ferrari.jpg")

  • Үүн дээр би дүрсийг хадгалж буй "img" гэсэн хувьсах нэрийг үүсгэсэн
  • Cv2.imread дотор давхар ишлэл дотор зургийн нэрийг өргөтгөлөөр бичнэ үү

Зургийн хэмжээг өөрчлөхийн тулд бид cv2.resize функцийг ашиглах болно. Энэ хэсэг нь заавал биш, хэрэв та хэмжээг өөрчлөхийг хүсвэл энэ функцийг ашиглаж болно

Cv2.resize дотор эхлээд дүрс хадгалагдаж буй хувьсагчийн нэрийг бичээд дараа нь түүний өргөн ба өндрийг бичнэ

Алхам 5: Зурагт ашиглахын тулд Track Bar утгыг уншина уу

Зурагт ашиглахын тулд Track Bar утгыг унших
Зурагт ашиглахын тулд Track Bar утгыг унших
Зурагт ашиглахын тулд Track Bar утгыг унших
Зурагт ашиглахын тулд Track Bar утгыг унших

За, одоо бид trackbar bar -ийн утгыг унших гэж байгаа тул үүнийг зурган дээрээ ашиглах боломжтой болно. Бид cv2.getTrackbarPos () функцийг ашиглан утгыг авах болно.

Энэ хэсгээс эхэлье …

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

Дээрх мэдэгдэлд би h_min хувьсагчийн нэрийг үүсгэж байгаа бөгөөд үүнд би Hue min -ийн утгыг хадгалах болно. Тиймээс cv2.getTrackbarPos -ийн 1 -р аргумент нь "Hue min" байх болно, учир нь би hue min -ийн утгыг хүсч байна (Үг үсэг нь createTrackbar функцтэй яг ижил байх ёстой), 2 -р аргумент нь түүний харьяалагддаг trackbar цонхны нэр байх болно.

  • Дээрх зурагт үзүүлсэн шиг h_max болон бусад функцүүдийн хувьд ижил үйлдлийг давтаж, дараа нь print () ашиглан бүх утгыг хэвлэнэ үү.
  • Гаралтыг хоёр дахь зурагт үзүүлэв. Энэ нь h_min, h_max, s_min, s_max, v_min, s_max утгуудыг хэвлэж байна.

Алхам 6: Зургийг харуулах, дээд ба доод хязгаарыг тохируулах

Зургийг харуулах, дээд ба доод хязгаарыг тохируулах
Зургийг харуулах, дээд ба доод хязгаарыг тохируулах

Одоо бидэнд өнгө, ханалт, үнэ цэнийн хамгийн бага ба хамгийн их утга байгаа бөгөөд энэ утгыг ашиглан зургийг шүүж, зургийн өнгөний гарцыг гаргах боломжтой болно.

Үүний тулд бид cv2.inRange функцийг ашиглан маск үүсгэх болно. Үүнээс өмнө бид өнгө, ханалт, үнэ цэнийн дээд ба доод хязгаарыг тогтоох болно

Тиймээс "доод" гэсэн хувьсагчийн нэрийг үүсгээд numpy массивын функцийг ашиглан 3 -ийн бүх хязгаарыг дараах байдлаар тохируулна уу

доод = np.array ([h_min, s_min, v_min])

Дээд талын хувьд ижил алхамыг давт

дээд = np.array ([h_max, s_max, v_max])

Одоо бид дараах байдлаар маск хийх болно

маск = cv2.inRange (хэмжээг өөрчлөх, доод, дээд) cv2.inRang дотор 1 -р аргумент нь миний эцсийн зургийг хадгалсан хувьсагч байх болно, 2 -р аргумент нь доод хязгаар, 3 -р аргумент нь дээд хязгаар байх болно.

Одоо бид үндсэн дүрс, маскыг үзүүлэх болно. Үзүүлэхийн тулд бид cv2.imshow () функцийг ашиглах болно

cv2.imshow ("img", хэмжээг өөрчлөх) Энэ нь үндсэн дүрсийг харуулах зорилготой юм. 1 -р аргумент бол таны хүссэн нэр өгч болох цонхны нэр, 2 -р аргумент бол миний харуулахыг хүссэн миний үндсэн зургийг хадгалсан хувьсагч юм.

Үүний нэгэн адил маск хийх алхмуудыг давтана уу

cv2.imshow ("Гаралт", маск)

Алхам 7: Одоо эцсийн шат

Одоо эцсийн шат
Одоо эцсийн шат

Эцсийн шатанд бид машины өнгийг гаргаж, дэлгэц дээр харуулах болно.

Би хувьсагчийн нэрийн үр дүнг бий болгосон. Дахин хэлэхэд та хүссэн нэрээ өгч болно. Тиймээс бид cv2.bitwise_and () функцийг ашиглах бөгөөд үүнд бид зургуудыг хамтад нь нэмж, шинэ дүрс үүсгэх болно. Хоёр зураг дээрх пикселүүд хаана байгаа ч гэсэн үүнийг тийм эсвэл "1" гэж авна.

үр дүн = cv2.bitwise_and (хэмжээг нь өөрчлөх, хэмжээг нь өөрчлөх, маск = маск)

  • Энэ тохиолдолд 1 -р аргумент нь бидний дүр төрх болно
  • Хоёрдахь аргумент нь бидний анхны зураг байх болно, гэхдээ дараа нь бидний өмнө хийсэн маск ашигласан болно
  • Эцэст нь imshow функцийг ашиглан үр дүнг харуулна уу

Энэ сүүлийн алхамыг хуулж аваарай, энэ бол зүгээр л саатал бөгөөд гар дээрх "a" товчлуурыг дарж гаралтын цонхноос гарах боломжтой

Алхам 8: Эцсийн гаралт

Зөвлөмж болгож буй: