داده کاوی با پایتون-روش الگوریتم   CRISP

 

 

 


روشهای داده کاوی

 

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

۱) طبقه بندی

۲) خوشه بندی

۳) کشف قانون همبستگی

۴) تشخیص و کشف خطا

۵) کشف الگوی ترتیبی

 

فرایند داده کاوی

کشف دانش از پایگاه داده ها:  Knowledge Discovery in Databases (KDD) 

 Knowledge Discovery in Databases (KDD) 

Knowledge Discovery in Databases (KDD)

همانطور که در تصویر بالا مشاهده میکنیم داده کاوی یکی از مراحل فرایند کشف دانش را تشکیل میدهد.

داده کاوی در کل مراحل و روش های مختلفی دارد.

برای داده کاوی اول باید

داده ها را  تمیز کرد،

دسته بندی کرد،

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

و …

 

روش الگوریتم   CRISP

Cross Industry Standard Process:فرایندهای استاندارد صنعت متقابل برای داده‌کاوی(ویکی)

CRISP

Cross Industry Standard Process

مراحل الگوریتم   CRISP

 

مرحله اول فهم کسب و کار

مرحله دوم  درک داده ها

مرحله سوم  آماده سازی داده ها

مرحله چهارم درست کردن مدل اجرایی برای انجام داده کاوی

مرحله پنجم ارزیابی مدلی که ایجاد کردیم با یکسری دادههای تستی

مرحله آخر از این مدل استفاده می کنیم برای تحلیل داده و توسعه

همانطور که در تصویر مشاهده میشود، توسط فلش هایی، مراحل به هم دیگر راه دارند که جهت تکمیل هر مرحله استفاده میشود.

دایره بزرگ هم نشان دهنده ی تکمیل کل فرایند و آماده شدن آن برای استفاده در این پروژه یا پروژه های دیگر است.



 

داده کاوی با پایتون-Datamining

 


داده کاوی

 

داده کاوی، استخراج اطلاعات ناشناخته و مفید از عظیم داده ها است. داده کاوی و تکنیکهای آن در بسیاری از حوزه ها به کار گرفته شده است. میتوانیم با یک مثال ساده هم به این موضوع بپردازیم :

بیایید با هم تصور کنیم انبوه داده ی ما معدن سنگ است(Big_Data )

datamining-big-data

داده کاوی-داده های بزرگ

 

اگر دانشی که قرار است از میان انبوه داده کشف شود، رگه طلایی باشد که باید از میان آن همه سنگ کشف شود،  با داده کاوی، دانش پنهان را  از  داده های بزرگ کشف می کنیم.

دانش

Knowledge-دانش

داده های بزرگ(Big_Data )

 

برای داده_کاوی ما نیاز به حجم زیادی داده داریم که این داده ها، Big_Data نامیده میشود. حجم زیاد یعنی اونقدر داده ها زیاد باشه که به راحتی نشه تجزیه و تحلیل کرد. فقط با ابزار خاص.

از ویژگیهای مهم Big_Data :

 

۱) ارزشمند بودن داده ها(value)

۲)متنوع بودن داده ها(variety

۳)حجیم بودن داده ها(volume)حجم زیاد یعنی اونقدر داده ها زیاد باشه که به راحتی نشه تجزیه و تحلیل کرد. فقط با ابزار خاص.

۴)داده ها به سرعت در حال تغییر و تولید هستند(Velocity)

۵)داده ها به درد بخور و صحیح هستند(veracity)

*****در کل سه ویژگی اول از همه مهمتر هستند. *****

 

آموزش  ما، در مورد ابزارهایی است که در داده کاوی عملی، برای یافتن و توصیف الگوهای ساختاری در داده ها، با استفاده از پایتون، استفاده می شوند. در سال های اخیر، پایتون، با حمایت از جامعه بزرگ محاسباتی علمی و تعداد روزافزون کتابخانه ها، برای تجزیه و تحلیل داده ها، توسعه برنامه های کاربردی محور، استفاده شده است. به طور خاص، ما با موارد زیر آشنا خواهیم شد:

  1. وارد کردن و تصویر سازی از داده ها
  2.  طبقه بندی و خوشه بندی داده ها
  3. کشف روابط  در داده ها با استفاده از رگرسیون و اقدامات همبستگی
  4. کاهش ابعاد داده ها به منظور فشرده سازی و تجسم اطلاعاتی که به ارمغان می آورد
  5. تجزیه و تحلیل داده های ساختاری

هر موضوع، بر اساس چهار کتابخانه بزرگ پایتون، برای تجزیه و تحلیل و دستکاری داده ها، بررسی  شده است: numpy، matplotlib، sklearn و networkx.

 

 

در قسمت بعدی درمورد فرایند و روشهای داده کاوی  توضیح خواهیم داد.


 


 

تفاوت تصاویر دیجیتال و آنالوگ

تصویر چیست؟

یک تصویر معمولی(پیوسته) که توسط دوربین، تلسکوپ، میکروسکوپ یا سایر ابزارهای نوری و الکترونیکی گرفته میشود، آرایه ای از سایه ها و تن رنگ های مختلف را نمایش میدهد.  تصاویرساخته شده با فیلم ها و یا تصاویر ویدئویی تولید شده، زیر مجموعه ای از تمام تصاویر ممکن است که شامل طیف گسترده ای از شدت روشنایی( از تاریکی به روشنایی) و طیف از رنگها که می تواند  هررنگ قابل تصور و سطح اشباع باشد

 

http://hamamatsu.magnet.fsu.edu پردازش تصویر

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

تصویر خاکستری(grayscale)

یک تصویر خاکستری (grayscale)، یک تابع یا سیگنال دو بعدی مانند:(p(x,y ، که مقدار آن برابر شدت روشنایی است. xوy مختصات مکانی هستند و z شدت روشنایی:

p(x,y)=z

 

 

16

 

15

 

به هر کدام از این خونه ها یک پیکسل وارزش آن حدود ۱ بایت یعنی مقداری بین ۰-۲۵۵ (۰=سیاه و ۲۵۵=سفید).

 

 

 

 

از کجا تصاویر گرفته می شوند؟
 دوربین های دیجیتال
 اسکنرهای MRI
بسته های گرافیکی کامپیوتری
 اسکنرهای بدن

تصویر دیجیتال

A Charge Coupled Device (CCD)

14

 

دوربین دیجیتال یک دستگاه الکترونیکی است که برای گرفتن عکس و ذخیرهٔ آن بجای فیلم عکاسی از حسگرهای حساس به نور معمولاً از نوع CCD یا CMOS استفاده می‌کند و تصویر گرفته شده توسط سنسور طی چند مرحله به حافظهٔ دوربین برای استفاده فرستاده می‌شود.ویکی

پیکسل(pixel)

در این دوربین‌ها تصویر توسط یک سنسور CCD گرفته می‌شود. CCD بصورت ردیفها و ستونهایی از سنسورهای نقطه‌ای نور هستند که به هر کدام از آنها پیکسل گفته میشود.  هر چه تعداد این نقاط بیشتر و فشرده تر باشد، تصویر دارای دقت بالاتری است) هر سنسور نور را به ولتاژی متناسب با درخشندگی نور تبدیل کرده و آن را به بخش تبدیل سیگنالهای آنالوگ به دیجیتال ADC می‌فرستد که در آنجا نوسانات دریافتی از CCD بهکدهای مجزای باینری (عددهای مبنای دو بصورت صفر و یک) تبدیل می‌شود. خروجی دیجیتال از ADC به یک پردازنده سیگنال‌های دیجیتال DSP فرستاده می‌شود که کنتراست و جزئیات تصویر در آن تنظیم می‌شود و قبل از فرستادن تصویر به حافظه برای ذخیره تصویر، اطلاعات را به یک فایل فشرده تبدیل می‌کند. هر چه نور درخشنده‌تر باشد، ولتاژ بالاتری تولید شده و در نتیجه پیکسل‌های رایانه‌ای روشن‌تری ایجاد می‌شود. هر چه تعداد این سنسورها که به‌صورت نقطه هستند بیشتر باشد، وضوح تصویر به دست آمده بیشتر است و جزئیات بیشتری از تصویر گرفته می‌شود.ویکی

از آنجا که تصاویر به طور کلی مربع یا مستطیل شکل  هستند، هر پیکسل ای که از دیجیتال سازی تصویر حاصل می شود، با یک جفت مختصات x و y  با مقادیر خاص نشان داده می شود.  در بسیاری از موارد، محل x به عنوان شماره پیکسل نامیده می شود و موقعیت Y به عنوان شماره خط شناخته می شود. بنابراین یک تصویر دیجیتال از یک آرایه پیکسل مستطیلی (یا مربع) تشکیل شده است که یک مجموعه از مقادیر شدت روشنایی را نشان می دهد 

The sensor array

58

 

می تواند کمتر از یک cm2 باشد

آرایه ای از photosite است.
هر photosite یک سطل از بار الکتریکی است.
آنها با توجه به شدت نور شارژ میشوند.

 

سنسور(ccd)

54

17

هر سنسور یا پیکسل، نور  را به ولتاژی متناسب با درخشندگی نور تبدیل میکند. اگر هر کدام از پیکسل ها را که روی ccd یا سنسور دوربین قرار دارد مانند سطل  و  نوری که از اطراف باید بگیرند مانند بارش باران بدانیم، آنگاه پیکسل دارای نور یا  بار الکتریکی را photosite گویند.

ccd

ccd-RGB

خطای Cannot run turtle module

خطای Cannot run turtle module

Traceback (most recent call last):

File “C:/Python/Python36/turtle2.py”, line 1, in <module>

import turtle as t; t.forward(100)

File “C://Python/Python36\turtle.py”, line 3, in <module>

t=turtle.Turtle()

AttributeError: module ‘turtle’ has no attribute ‘Turtle

این خطا واسه اینه که نباید اسم فایل را turtle میذاشتیم باید اسمشا تغییر میدادیم و اگر تو پوشه یه همچین اسمی داشتیم پاک میکردیم.

 

پایتون

آموزش پایتون_ تابع lambda(ناشناس)

train-your-python-part-14-more-advanced-lists-lambda-and-lambda-operators.w1456

lambda

یک روش دیگر برای تعریف تابع استفاده از توابع ناشناس که با عنوان توابع  lambda شناخته میشوند.  در این قسمت شما نحوه تعریف و استفاد از آن را یاد خواهید گرفت. در پایتون تابع ناشناس تابعی هست که بدون نام تعریف میشود. در حالی که توابع معمولی با استفاده از کلمه کلیدی def تعریف میشوند، توابع ناشناس با استفاده از کلمه کلیدی lambda  تعریف میشوند. به خاطر همین توابع ناشناس توابع lambda   نامیده میشوند.

Lambda, filter, reduce and map

 

عملگر(اپراتور) Lambda

 

خوبه بدونید عده ای از لامبدا میترسن، عده ای آن را دوست دارند و عده ای هم از آن متنفرن. مطمئنا در پایان این مطلب عاشق آن میشوید. عملگر لامبدا یا تابع lambda راهی برای ایجاد توابع ناشناس کوچک است، یعنی توابع بدون نام. این توابع چیز بی ممصرفی هستن یعنی فقط در جایی که تعریف میشوند مورد استفاده قرار میگیرند. توابع لامبدا به طور عمده در ترکیب با توابع ()filter(), map و reduce() استفاده میشوند. ویژگی لامبدا به دلیل تقاضای برنامه نویسان Lisp به پایتون اضافه شد.

سینتکس کلی یک تابع لامبدا بسیار ساده است:

lambda argument_list: expression.

argument list   شامل یک لیست از آرگومان جدا شده با کاما است و expression عبارت محاسباتی با استفاده از این آرگومانها است. شما می توانید تابع را به یک متغیر اختصاص دهید تا نامی به آن بدهید.

مثال زیر از یک تابع لامبدا، مجموع دو آرگومان را به دست می آورد:

>>> f = lambda x, y : x + y >>> f(1,1) 2

تابع map()

فایده و مزیت عملگر لامبدا زمانی که در ترکیب با map() استفاده می شود، دیده می شود. map () یک تابع با دو آرگومان  است:

r = map(func, seq)

اولین آرگومان func نام یک تابع وآرگومان دوم seq یک دنباله (به عنوان مثال یک لیست) است.

map()، تابع func روی تمام عناصر seg اعمال میکند. . map() یک لیست جدید را با عناصری که توسط func تغییر می کنند، باز می گرداند.

>>> def fahrenheit(T):
return ((float(9)/5)*T + 32)

>>> def celsius(T):
return (float(5)/9)*(T-32)

>>> temp = (36.5, 37, 37.5,39)

>>> F = map(fahrenheit, temp)

>>> C = map(celsius, F)

در مثال بالا ما از لامبدا استفاده نکرده ایم. با استفاده از لامبدا،  ما نباید تعریف و نام توابع فارنهایت () و سانتیگراد () را داشته باشیم.

>>> Celsius = [39.2, 36.5, 37.3, 37.8]
>>> Fahrenheit = map(lambda x: (float(9)/5)*x + 32, Celsius)
>>> print (Fahrenheit)
[۱۰۲٫۵۶, ۹۷٫۷۰۰۰۰۰۰۰۰۰۰۰۰۰۳, ۹۹٫۱۴۰۰۰۰۰۰۰۰۰۰۰۰۱, ۱۰۰٫۰۳۹۹۹۹۹۹۹۹۹۹۹۹]
>>> C = map(lambda x: (float(5)/9)*(x-32), Fahrenheit)
>>> print (C)
[۳۹٫۲۰۰۰۰۰۰۰۰۰۰۰۰۰۳, ۳۶٫۵, ۳۷٫۳۰۰۰۰۰۰۰۰۰۰۰۰۰۴, ۳۷٫۷۹۹۹۹۹۹۹۹۹۹۹۹۹۷]
>>> 

map () را می توان به بیش از یک لیست اعمال کرد. لیست ها باید طول یکسان داشته باشند. map () تابع lambda خود را به عناصر لیست های استدلال اعمال می کند، یعنی ابتدا برای عناصر با شاخص ۰، و سپس به عناصر با شاخص اول، تا زمانی که n-th index رسیده است، اعمال می شود:

>>> a = [1,2,3,4]
>>> b = [17,12,11,10]
>>> c = [-1,-4,5,9]
>>> map(lambda x,y:x+y, a,b)
[۱۸, ۱۴, ۱۴, ۱۴]
>>> map(lambda x,y,z:x+y+z, a,b,c)
[۱۷, ۱۰, ۱۹, ۲۳]
>>> map(lambda x,y,z:x+y-z, a,b,c)
[۱۹, ۱۸, ۹, ۵]

ما در مثال بالا می توانیم ببینیم پارامتر x مقادیر خود را از لیست a می گیرد، در حالی که y مقدار آن را از b و z از لیست c دریافت می کند.

Filtering

تابع (filter(function, list  یک روش عالی برای فیلتر کردن تمام عناصر یک لیست ارائه می دهد که عملکرد تابع True را برمیگرداند. تابع( filter(f,l  به عنوان اولین پارامتر، تابع f را  نیاز دارد. f یک مقدار بولین، یعنی درست یا غلط، را برمیگرداند. این تابع به هر عنصر لیست l اعمال خواهد شد. تنها اگر f return True عنصر لیست را در لیست نتیجه قرار دهد.

>>> fib = [0,1,1,2,3,5,8,13,21,34,55]
>>> result = filter(lambda x: x % 2, fib)
>>> print (result)
[۱, ۱, ۳, ۵, ۱۳, ۲۱, ۵۵]
>>> result = filter(lambda x: x % 2 == 0, fib)
>>> print( result)
[۰, ۲, ۸, ۳۴]
>>>

 Reducing a List

توسط تابع (reduce(func, seq،  تابع func  روی دنباله seq پیوسته  اعمال میکند و آن را کاهش میدهد.

>>> reduce(lambda x,y: x+y, [47,11,42,13])
۱۱۳
https://www.python-course.eu/lambda.php

https://www.python-course.eu/lambda.php

 

image -processing-python-opencv

نمایش تصویرRGB با Matplotlib و تابع تبدیل ()cvtColor در OpenCv

.

۱- نمایش تصویرRGB با Matplotlib</a
۱- ۲خواندن و نمایش تصویر فقط با opencv
۱- ۳خواندن و نمایش تصویر فقط با matplotlib
۱- ۴ خواندن تصویر با opencv و نمایش آن توسط matplotlib
۲- تابع تبدیل ()cvtColor در OpenCv

 

 


نمایش تصویرRGB با Matplotlib

 


می دانیم که کتابخانه  matplotlib ، برای کار با نمودارها و ارقام است. اما اگر خواستیم یک تصویر ساده RGB را نمایش دهیم چه؟ آیا می توانیم با matplotlib انجام دهیم؟

در این قسمت مابه شما نشان می دهیم که چگونه یک تصویر RGB  را با matplotlib فقط در چند خط کد  میشه نشان داد و هرگونه ابهاماتی را که هنگام استفاده از OpenCV و matplotlib وقتی با هم اجرا میشوند، مواجه می شوید روشن کنید.

یک تصویر RGB، که گاهی اوقات به عنوان یک تصویر رنگی واقعی نامیده می شود، به صورت یک آرایه سه بعدی  داده m × n × ۳ ذخیره می شود که کانالهای قرمز، سبز و آبی رنگ را برای هر پیکسل تعریف می کند. رنگ هر پیکسل با ترکیبی از فرمت های فایل های گرافیکی تصاویر RGB، به عنوان تصاویر ۲۴(۸*۳) بیتی ذخیره می شود، حال آنکه هر کدام از کانالهای قرمز، سبز و آبی ۸ بیت هستند.

 

تصویر اصلی

 

خواندن و نمایش تصویر فقط با opencv

کد زیر فقط از opencv برای خواندن و نمایش تصویر استفاده  کرده است. توجه داشته باشید که فرمت رنگ پیش فرض در OpenCV  BGR است (بایت ها معکوس می شوند).

import numpy as np
import cv2
img = cv2.imread('test.png')
cv2.imshow('opencv',img)
cv2.waitKey (0)
cv2.destroyAllWindows ()

خروجی:

11

 

خواندن و نمایش تصویر فقط با matplotlib

در کد زیر هم فقط از matplotlib برای خواندن و نمایش تصویر  استفاده شده است.

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
image = mpimg.imread("img2.png")
plt.imshow(image)
plt.show()

اولین کاری که ما انجام می دهیم این است که کتابخانه matplotlib را وارد کنیم.

ولی ما فقط از یک قسمتی از این کتابخانه مربوط به خواندن تصویر است به عنوان mpimg  ، که جایگزین  matplotlib.image،  همچنین از plt که جایگزین matplotlib.pyplot است  برای نمایش استفاده کردیم.
ما می توانیم تصویر زیر را ببینیم:

 

12

در مورد خلاص شدن از محور  و اعداد از کد زیر استفاده میکنیم:

plt.axis(“off”)
plt.imshow(image)
plt.show()
 
 

خواندن تصویر با opencv و نمایش آن توسط matplotlib

import cv2
import matplotlib.pyplot as plt
image = cv2.imread("img2.png") 
 plt.axis("off") 
plt.imshow(image)
plt.show() 

 

اما نتیجه انتظار نمی رفت تصویر زیر باشد:

13

 

چرا نتیجه مورد انتظار نیست؟

پاسخ به عنوان یک نکته در opencv نهفته است.

 

نکته

OpenCV تصاویر RGB را به عنوان آرایه های چند بعدی Numpy معرفی می کند … اما به ترتیب معکوس! به این معنی که تصاویر در واقع در BGR به جای RGB نشان داده شده است!

پس چگونه این مسئله را حل کنیم؟

 

 تصویر را از BGR به RGB   تبدیل   کنیم:


تابع تبدیل ()cvtColor در OpenCv 


این تابع یک تصویر ورودی را از یک فضای رنگی به یکی دیگر تبدیل می کند.  در صورت تغییر به-از فضای رنگ RGB، منظور از کانال ها باید صریح مشخص شود (RGB یا BGR).

cv2.cvtColor(src, code[, dst[, dstCn]]) → dst

پارامتر ها

src : تصویر ورودی:

۸-bit unsigned, 16-bit unsigned ( CV_16UC… )

dst : تصویر خروجی که اندازه و عمق آن باید مثل تصویر ورودی باشد.

code : کد تبدیل فضای رنگ

dstCn – تعداد کانال ها در تصویر مقصد؛ اگر پارامتر ۰ باشد، تعداد کانال ها به صورت خودکار از src و کد به دست می آید.

چرا در OpenCV  فضای رنگ BGR  است؟

 توجه داشته باشید که فرمت رنگ پیش فرض در OpenCV اغلب به عنوان RGB نامیده می شود اما در واقع BGR است (بایت ها معکوس می شوند).

  بنابراین بایت اول یک تصویر استاندارد ۲۴ بیتی،  ۸ بیتی،  آبی ، بایت دوم سبز  و بایت سوم قرمز خواهد بود. بایت های چهارم، پنجم و ششم پیکسل دوم (آبی، سپس سبز، سپس قرمز)، و غیره

محدوده  معمول برای مقادیر کانال R، G و B عبارتند از:

۰ to 255 for CV_8U images

۰ to 65535 for CV_16U images

۰ to 1 for CV_32F images

CV_8U  – یعنی یک پیکسل می تواند مقادیر ۰-۲۵۵ داشته باشد، این محدوده طبیعی برای اکثر فرمت های تصویری و فیلم است.

CV_32F – پیکسل می تواند هر مقدار بین ۰-۱٫۰ داشته باشد، برای برخی از مجموعه محاسبات در داده ها مفید است – اما باید آن را به ۸ بیت برای ذخیره یا نمایش با ضرب کردن هر پیکسل به ۲۵۵ تبدیل کنید.

CV_8U: یک عدد صحیح بدون علامت ۱ بایت (unsigned char).
CV_32S عدد صحیح علامت دار (int).
CV_32F: نقطه شناور ۴ بایت.

 

import numpy as np
 import matplotlib.pyplot as plt
 import cv2
img = cv2.imread('img2.png')
temp = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(temp)
plt.axis('off')
plt.show()

 

نتیجه اسکریپت ما نشان می دهد که رنگ های تصویر ما درست است.


 

 

 

پایتون

آموزش پایتون_for

مفهوم Loop 

یک حلقه یاLoop  دنباله ای از دستورالعمل است که به طور مداوم تکرار می شود تا شرایط خاصی به دست آید. به عنوان مثال، ما مجموعه ای از اقلام داریم و یک حلقه ایجاد می کنیم تا از طریق آن بتوانیم  تمام عناصر موجود در مجموعه را پیمایش کنیم. حلقه ها در Python می توانند با for یا while  ایجاد شوند.

در این جلسه قراره در مورد حلقه ها بحث کنیم. در ابتدا از for شروع میکنیم :

for روی هر کدام ا آیتم های دنباله ای مثل رشته، لیست و… تکرار میشود. به عبارت دیگر آیتم ها به همان ترتیبی که در دنباله هستند طاهر میشوند. مهمترین مسئله در این حلقه، تعداد دفعات تکرار مشخص است

مثلا کامپیوتر n عدد از کاربر دریافت میکنه و بزرگترین آنها را نمایش میده.

for var in sequence:
   do_statement(s)

حلقه for با string

 

>>> stg=”sufra.ir”
>>> for i in stg:
print(i)

s
u
f
r
a
.
i
r
>>>
نکته

وقتی حلقه for  را اجا میکنیم آیتم ها به هر تعدادی که هستند زیر هم دیگر چاپ میشوند. برای اینکه کنار هم چاپ شوند باید از (“”=print(i,end  استفاده کنیم

 

print(i,end=””) ???

 

end

همانطور که در تصویر بالا مشاهده میکنید end=’\n”  به صورت پیش فرض تعریف شده تا بعد از تایپ  هر آیتم به خط بعدی رفته تا آیتم های دیگر را چاپ کند.

 

stg="sufra.ir"
>>> for i in stg:
 print(i,end=" ")
s u f r a . i r

حلقهfor با list

>>> a = ['python', 'html', 'c++']
 >>> for i in a:
 print(i , len(i))
python 6
 html 4
 c++ 3
 >>>

حلقه for با tuple

T=("A","B","C")
>>> for x in T:
 print(x)
A
 B
 C
 >>> for x in T:
 print(x,end="")
ABC
 >>>

حلقه for با  Dictionary

>>> d = {'x': 1, 'y': 2, 'z': 3}
 >>> for key in d:
 print (key, ":", d[key])
x : 1
 y : 2
 z : 3
>>> data = { "de": "Germany", "sk": "Slovakia", "hu": "Hungary", "ru": "Russia" }
>>> for k, v in data.items():
print("{0} is an abbreviation for {1}".format(k, v))
de is an abbreviation for Germany
 sk is an abbreviation for Slovakia
 hu is an abbreviation for Hungary
 ru is an abbreviation for Russia
 >>>

حلقه for با else

>>> words = ["cup", "star", "monkey", "bottle", "paper", "door"]
>>> for word in words:
print(word)
else:
print("Finished looping")
cup
star
monkey
bottle
paper
door
Finished looping
>>>

دستور else  بعد از تمام شدن حلقه اجرا میشود. ما لیستی از کلمات را با یک حلقه به پیش میبریم. وقتی تکرار شد، پیام “پایان حلقه” را چاپ می کنیم که در داخل بدن قرار دارد و پس از کلمه کلیدی دیگری قرار دارد.

حلقه for با range

 

تابع range لیستی از اعداد ۰-(۱-n) را تولید میکند.

 

>>>
 for i in range(1, 6):
print("Statement executed {0}".format(i))
Statement executed 1
 Statement executed 2
 Statement executed 3
 Statement executed 4
 Statement executed 5
 >>>
>>> for n in range(1, 11):
 print(n, end=' ')
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰
 >>> for n in range(0, 11, 2):
 print(n, end=' ')
۰ ۲ ۴ ۶ ۸ ۱۰
 >>>

حلقه for با ایندکس

>>> words = ["cup", "star", "monkey", "bottle", "paper", "door"]  >>> for word, idx in enumerate(words):  print("{0}: {1}".format(word, idx)) 0: cup  1: star  2: monkey  3: bottle  4: paper
  ۵: door  >>>

با استفاده از تابع enumerate عنصر لیست را با ایندکس آن چاپ کنیم.

حلقه for  تو  در تو

 

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

>>> nums = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> for i in nums:
for e in i:
print(e, end=' ')
print()
۱ ۲ ۳ 
۴ ۵ ۶ 
۷ ۸ ۹

حلقه for  با zip

>>> words1 = ["cup", "bottle", "table", "rock", "apple"]
 >>> words2 = ["trousers", "nail", "head", "water", "pen"]
 >>>
 for w1, w2 in zip(words1, words2):
 print(w1, w2)

cup trousers bottle nail table head rock water apple pen >>>

حلقه for  و break

برنامه به محض رسیدن  به break از حلقه خارج میشود.

import random
 import itertools
for i in itertools.count():
val = random.randint(1, 30)
print(val)
if (val == 22):
 break
۱۳
 ۸
 ۱۸
 ۶
 ۲۰
 ۲۴
 ۱۳
 ۲۲

 

حلقه for  با continue

برنامه با  شرطی که گذاشتیم وقتی به continue رسید آن را اجرا نمیکند و حلقه کار خود را ادامه میدهد

num = 0
for num in range(20):
num = num + 1
if (num % 2) == 0:
continue
print(num, end=' ')
print()
۱ ۳ ۵ ۷ ۹ ۱۱ ۱۳ ۱۵ ۱۷ ۱۹

کتابخانه های مورد نیاز پردازش تصویر


برنامه های این  دوره از  پردازش تصویر، با پایتون ۲٫۷ هست. کتابخانه های مورد نیاز به صورت زیر می باشد:

۱- Numpy
۲- Matplotlib
۳-opencv


کتابخانه های مورد استفاده در پردازش تصویر با پایتون

Numpy

برای کار با اعداد، آرایه ها و ماتریس ها از کتابخانه ی numpy استفاده می شود. در پردازش تصویر، کار با تصاویر هم نوعی کار با ماتریس ها  می باشد.

 برای نصب این کتابخانه، وارد آدرس C:\Python27\Scripts(یا هر درایوی که پایتون را در آن نصب کرده ایم)  می شویم. کلید شیفت را پایین نگه داشته و در قسمتی خالی از این مکان کلیک راست کرده و گزینه open command را انتخاب می کنیم سپس خط زیر را تایپ می کنیم :

pip install numpy

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

Matplotlib

برای رسم نمودار ها بیشتر کاربرد دارد. قبل از نصب این کتابخانه اول دو کتابخانه زیر را به عنوان پیش نیاز نصب می کنیم:

pip install python-dateutil
pip install pyparsing
pip install matplotlib
</span>

opencv

از لینک زیر opencv را دانلود کرده و از حالت فشرده خارج می کنیم. 

https://github.com/opencv/opencv/releases/download/3.3.0/opencv-3.3.0-vc14.exe

سپس وارد مسیر C:\opencv\build\python\2.7\x86 شده و فایل موجود را کپی کرده و در مسیر C:\Python27\Lib\site-packages قرار می دهیم. 

نصب کتابخانه های مورد نیاز پرازش تصویر تموم شد. برای مطمئن شدن از نصب صحیح این کتابخانه ها، وارد شل پایتون شده و آنها را import  می کنیم. نباید خطایی نمایش داده شود. 

Numpy-Matplotlib-opencv

Numpy-Matplotlib-opencv

برای اطلاع از نسخه opencv دستور زیر را در شل پایتون وارد کنید:

 

 import cv2
cv2.__version__
 '۳٫۲٫۰'


۱-پردازش تصویر با پایتون-OpenCV
۲-آموزش نصب pip در پایتون
۳-
کتابخانه های مورد نیاز پردازش تصویر
۴ – خواندن و نمایش فرمت تصویر در پایتون
۵- نمایش تصویرRGB با Matplotlib و تابع تبدیل ()cvtColor در OpenCv

۶-تغییر فضاهای رنگ- opencv
۷-تقسیم و ادغام کانال های تصویری با opencv

 

🆔@image_Process
🌐https://t.me/image_Process



آموزش قبلی 

آموزش بعدی

آموزش نصب pip در ویندوز

۱-آموزش نصب pip
۲- متغیرهای محیطی


آموزش نصب pip

 

سلام. در این آموزش قرار است درابتدا، pip را دانلود و نصب میکنیم. سپس در مورد متغیر های محیطی توضیحی کم می دهیم.

دانلود و نصب pip

 

برای نصب کتابخانه های پایتون با استفاده از  pip، ابتدا وارد  اینجا می شویم،  سپس get-pip.py را دانلود می کنیم. برای نصب مراحل زیر را انجام دهید:

 

  1. فایل get-pip.py را دانلود می کنیم.
  2. مکانی که دانلود شده را می یابیم.
  3. در محل دانلود شده ابتدا کلید shif را پایین نگه داشته و  سپس open command را انتخاب می کنیم.
  4. نام فایل را در cmd نوشته و اینتر را می زنیم تا  pip را نصب کند.

 

آموزش-نصب-pip

 

متغیرهای محیطی

 

متغیرهای محیطی (Environment variable) مجموعه‌ای از مقادیر نام‌گذاری‌شده هستند که می‌توانند نحوه رفتار کردن فرایندهای در حال اجرا را تغییر داده و بر روی آنها اثر بگذارند. متغیرهای محیطی مانند path، به برنامه‌ها کمک می‌کنند تا بدانند در چه دایرکتوری فایل‌ها را نصب و ذخیره  کنند.

 

بعد از نصب باید  سیستم  بفهمد که ما pip را نصب کردیم. در ادامه مراحل زیر را به ترتیب انجام می دهیم:

 

  1. بر روی my computer کلیک راست می کنیم.
  2. از سمت چپ advanced system settings  را انتخاب می کنیم.
  3. پنجره ای باز میشود که از بین تب های آن Advanced را انتخاب، و دکمه  Environment Variable می زنیم.
  4.  این مسیر  system variable–>path–>Edit را طی میکنیم.
  5. سپس با باز شدن پنجره  Edit System Vriable، از قسمت  Variable value، به انتهای آخرین آدرس رفته، یک ; میگذاریم و آدرس محل نصب pip را وارد میکنیم.

 

Environment variable

Environment variable

در پایان با نوشتن pip و زدن اینتر تصویر زیر که نمایش دستوراتی برای استفاده از آن هست را میبینید.

 

pip3

pip

بعد از نصب pip، به راحتی میتوانید کتابخانه های پایتون را از این طریق نصب کنید.




۱-پردازش تصویر با پایتون-OpenCV
۲-آموزش نصب pip در پایتون
۳-
کتابخانه های مورد نیاز پردازش تصویر
۴ – خواندن و نمایش فرمت تصویر در پایتون
۵- نمایش تصویرRGB با Matplotlib و تابع تبدیل ()cvtColor در OpenCv

۶-تغییر فضاهای رنگ- opencv
۷-تقسیم و ادغام کانال های تصویری با opencv

 

 

🆔@image_Process
🌐https://t.me/image_Process

 


آموزش قبلی


آموزش بعدی

 

پردازش تصویر با پایتون-OpenCV

۱- opencv
۲- بینایی رایانه ای
۳-The OpenCV Python Interface


OpenCV


 اپن سی وی (Open Source Computer Vision Library)، کتابخانه ی  متن باز  بینایی کامپیوتر، تحت مجوز BSD منتشر شده است و از این رو برای استفاده دانشگاهی و تجاری رایگان است.

OpenCV در سال ۱۹۹۹ توسط Gary Bradsky در اینتل بنا نهاده و اولین بار در سال ۲۰۰۰ منتشر شد. در حال حاضر  OpenCV،  بسیاری از الگوریتم های مربوط به بینایی  کامپیوتر و یادگیری ماشین را پشتیبانی می کند و روز به روز گسترش می یابد. OpenCV از طیف گسترده ای از زبان های برنامه نویسی مانند C، Python، Java و غیره پشتیبانی می کند و در سیستم عامل های مختلف از جمله Windows، Linux، OS X، Android و iOS در دسترس است.

OpenCV  برای بهبود محاسبات و برنامه های بی درنگ طراحی شده است .

 

بینایی رایانه‌ای


بینایی رایانه‌ای Computer vision) یا بینایی ماشین ( Machine vision) یکی از شاخه‌های علوم کامپیوتر است که شامل روش‌های مربوط به دستیابی تصاویر، پردازش، آنالیز و درک محتوای آن‌ها است. معمولاً این پردازش‌ها، تصاویر تولید شده در دنیای واقعی را به عنوان ورودی دریافت و داده‌هایی عددی یا سمبلیک را به عنوان خروجی تولید می‌کنند. یکی رویه‌های توسعهٔ این شاخه بر اساس شبیه‌سازی توانایی بینایی انسان در رایانه است.

 

بینایی رایانه‌ای به مسائل مختلفی از جمله استخراج داده از عکس، فیلم، مجموعه چند عکس از زوایای مختلف و پردازش تصاویر پزشکی می‌پردازد. معمولاً ترکیبی از روش‌های مربوط به پردازش تصاویر و ابزارهای یادگیری ماشینی و آمار برای حل مسایل مختلف در این شاخه استفاده می‌گردد. ویکی.

python-image-processing

python-image-processing

The OpenCV Python Interface


OpenCV  یک کتابخانه به زبان  c++،  همراه ماژولهای زیادی که در زمینه بینایی کامپیوتر پوشش دهنده است، میباشد.

OpenCV-Python یک کتابخانه پایتون است که برای حل مشکلات بینایی کامپیوتر طراحی شده است. در واقع  از پایتون به عنوان رابطی برای استفاده از این کتابخانه استفاده میشود. علاوه بر C ++ (و C)، پشتیبانی از پایتون به عنوان یک زبان برنامه نویسی ساده تر از طریق یک رابط پایتون در بالای کد پایه C ++ وجود دارد. در واقع پایتون به عنوان یک اسکریپت بر روی سی ++ سوار میشود. 

پایتون یک زبان برنامه نویسی هدف است که توسط Guido van Rossum طراحی و عمدتا به دلیل سادگی و خوانایی بالا، بسیار محبوب شده است. پایتون، برنامه نویس را قادر می سازد تا ایده هایش را در خطوط کمتری بیان کند. در مقایسه با زبانهایی مانند C++ / C ، پایتون کندتر است.  پایتون،  به راحتی می تواند به وسیله C / C ++ گسترش یابد، و ما را قادر می سازد تا کد C / C ++ را به صورت محاسباتی پرقدرت بنویسیم و پلاگین های پایتون را ایجاد کنیم که می تواند به عنوان ماژول های پایتون استفاده شود.

این  موضوع  دو مزیت دارد:

۱٫ کد پایتون  به اندازه C / C ++سریع  میشود(چون  C ++ واقعی در پس زمینه،  کار می کند) .

۲٫  استفاده از کد پایتون نسبت به C / C ++  آسان تر می شود.

OpenCV-Python از کتابخانه Numpy استفاده می کند که یک کتابخانه بسیار کارآمد برای عملیات عددی با سینتکس  MATLAB است. تمام ساختارهای آرایه OpenCV به آرایه های Numpy تبدیل می شوند. این باعث می شود که ادغام با سایر کتابخانه هایی که از Numpy استفاده می کنند راحت تر باشد  مانند SciPy و Matplotlib.



۱-پردازش تصویر با پایتون-OpenCV
۲-آموزش نصب pip در پایتون
۳-
کتابخانه های مورد نیاز پردازش تصویر
۴ – خواندن و نمایش فرمت تصویر در پایتون
۵- نمایش تصویرRGB با Matplotlib و تابع تبدیل ()cvtColor در OpenCv

۶-تغییر فضاهای رنگ- opencv
۷-تقسیم و ادغام کانال های تصویری با opencv

 

🆔@image_Process
🌐https://t.me/image_Process

 


آموزش بعدی