شما این محصولات را انتخاب کرده اید

سبد خرید

شناسه پست: 4345
بازدید: 1025

 

در قسمت قبلی ” کار با تصویر در OpenCV ” با نحوه خواندن فایل از ورودی توسط Python + OpenCV آشنا شدیم. حالا میخوایم فایل رو با فرمت های مختلف ذخیره کنیم یا در فایل های تصویری تغییر ایجاد کنیم.

 

تغییر نوع فایل تصویری در OpenCV چگونه است ؟

خوشبختانه توابع تغییر دهنده فرمت تصاویر به صورت پیشفرض در OpenCV قرار دارند برای تغییر فرمت تصویری ورودی به png می توانید از کد زیر استفاده کنید

import numpy as np

import cv2

img = cv2.imread('D:/P30Script/opencv/03/p30script.jpg')IMWRITE_PNG_COMPRESSION

cv2.imwrite('output.png', img, [cv2.])

خروجی کد:

p30script-coverting_image_color

 

این تغییر نوع فایل به کمک ImwriteFlag انجام می شود . در این نمونه ما از فشرده ساز PNG استفاده می کنیم. ImwriteFlag به شما اجازه میدهد که فرمت خروجی فایل را تغییر دهید و یا کیفیت فایل را کم و زیاد کنید.

 

فضای رنگی تصاویر

 

در دنیای بینایی ماشین و پردازش تصویر فضای رنگی به نحوه خاص سازماندهی تصاویر گفته می شود. یک فضای رنگی در اصل تلفیقی از دو چیز است، مدل رنگی و تابع نگاشت. دلیل این که ما به این مبحث می پردازیم این است که فضا های رنگی به ما کمک میکنند بتوانیم پیکسل ها را توسط تاپل ها باز نمایش دهیم.

فضا های رنگی بسیار وجود دارند که از معروفترین آن ها می توان به RGB ،YUV ،HSV و Lab اشاره کرد. در زمانی که با یک مساله جدید روبرو هستیم. کافی است فضای رنگی مناسب را انتخاب کنیم تا حل مسئله آسان گردد. بزارین با چندتا مثال این فضا ها رو توضیح بدیم.

در OpenCV بالغ بر 190 فضای رنگی در دسترس می باشد برای دیدن این فضا های رنگی، یک فایل پایتون ایجاد کنید و کد زیر رو توش اجرا بگیرید :

import cv2

print([x for x in dir(cv2) if x.startswith('COLOR_')])

Splitting image channels

 

با اجرای کد بالا ، شما لیستی از امکان ارائه شده از سوی OpenCV برای تغییر فضا های رنگی را مشاهده خواهید نمود.

با استفاده از OpenCV ما می توانیم تقریبا هر فضای رنگی را به فضایی دیگر تغییر دهیم .

با مثالی به استقبال تغییر فضای رنگی تصاویر میرویم ، یک فایل پایتون ایجاد کنید . کد زیر را در آن قرار دهید مسیر فایل که مد نظرتان است را جایگزین مسیر فایل موجود در کد زیر کنید:

 

import cv2

img = cv2.imread('D:/P30Script/opencv/03/p30script.jpg', cv2.IMREAD_COLOR)

gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

yuv_img = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)

cv2.imshow('Grayscale image', gray_img)

cv2.imshow('YUV image', yuv_img)

cv2.waitKey()

در کد بالا با استفاده از تابع cvtColor و با مقدار دهی دلخواه رنگبندی تصاویر ورودی را تغییر می دهیم. نتیجه این کد به صورت زیر خواهد بود :

 

p30script-coverting_image_color_1

 

Merging image channels

 

برای بازی با رنگ های موجود در تصویر ها می توانید آن ها را جداسازی (split ) سپس با یکدیگر ادغام کنید.

هر ترکیبی رنگی می تواند یک تصویر جدید را در اختیار شما قرار دهد. نمونه کد :

import cv2

img = cv2.imread('D:/P30Script/opencv/03/p30script.jpg', cv2.IMREAD_COLOR)

g,b,r = cv2.split(img)

gbr_img = cv2.merge((g,b,r))

rbr_img = cv2.merge((r,b,r))

rgr_img = cv2.merge((r,g,r))

cv2.imshow('Original', img)

cv2.imshow('RBR', rbr_img)

cv2.imshow('RGR', rgr_img)

cv2.waitKey()

خروجی کد به صورت زیر خواهد بود :

 

p30script-coverting_image_color_2

 

با ما در ادامه پست های کار با تصویر در OpenCV_Python همراه باشید.