קורס – DSP-L1 – 001 וראיה ממוחשבת
- קורס פייטון הינו דרישת קדם לקורס – נעשה חזרה מהירה מאוד
מבוא לפייטון חזרה מהיררה (קורס פייטון הינו דרישת קדם לקורס – נעשה חזרה מהירה מאוד )
DTF – Discrete Fourier Transform
קליטת מידע ממקרו בקר ב UART ב פייתון ועיבוד אותות – על המידע
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import serial import numpy as np import time # Open a serial connection to the port ser = serial.Serial('COM8', baudrate=115200, timeout=1) time.sleep(2) # Initialize an empty NumPy array to store the data data = np.empty(0) while True: t=t+1 # Read a line of data from the serial port #print (ser.read()) byte_val=ser.read(1) # byteorder is big where MSB is at start int_val = int.from_bytes(byte_val, "big") Print(int_val) |
קונבולוציה – חשוב moving average – filter
FIR filter
https://robotronix.co.il/wp-content/uploads/2022/12/2014_apple_stock.csv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import pandas as pd import plotly.express as px import matplotlib.pyplot as plt import numpy as np df = pd.read_csv('https://robotronix.co.il/wp-content/uploads/2022/12/2014_apple_stock.csv') #print(df) df_x= pd.DataFrame(df,columns=['AAPL_x','AAPL_y']) x=df_x[["AAPL_x"]].to_numpy() y=df_x[["AAPL_y"]].to_numpy() y2=y+20 #print(y) plt.plot(y,label='y') y2 = df['AAPL_y'].rolling(window =10).mean().to_numpy() plt.plot(y2,label='y2') plt.legend() # function to show the plot plt.show() print("-----------------------------") print(" some statistics ") print("mean y" , round(np.mean(y),1)) print("mean y2" , round(np.mean(y2[9:]),1)) print("std" , round(np.std(y),1)) print("min" , round(np.min(y),1)) print("max" , round(np.max(y),1)) print("-----------------------------") |
תרגיל כיתה :
טען את הקובץ הבא ישירות מהאתר
https://robotronix.co.il/wp-content/uploads/2022/12/data2.csv
בנה תוכנה בשפת פייתון אשר קולטת קובץ אקסל
- מציגה את הנתונים בגרף
- מחליקה את הנתונים לפי חלון 5 ולפי חלון 20
- מציגה את הגרף המוחלק
- מחשב סטיית תקן , מינימום ומקסימום
- התוכנה מחשבת את המקומו
מציאת מינימום ומקסימום בנתונים
חישוב מנימום ומקסימום של פונקציה בפייתון
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks from scipy.signal import find_peaks import numpy as np import seaborn as sns import pandas as pd import matplotlib.pyplot as plt days=10 total=480*days total=1000 HES=pd.read_csv(r'D:\Stocks\sp-500\HES.csv', nrows=total) HES['x'] = range(len(HES)) #print(HES) y = HES['Open'].values x = HES['x'].values fig = plt.figure() ax = fig.subplots() plt.title("data : pure") ax.plot(x,y) y2=HES['Open'].rolling(40,10).mean() y1=HES['Open'].rolling(40,10).mean() #print(y) #print(y) #defining the x and y arrays print("data : reduce noise") fig = plt.figure() ax = fig.subplots() plt.title("data : reduce noise") ax.plot(x,y2) print("data : reduce noise") fig = plt.figure() ax = fig.subplots() ax.plot(x,y) ax.plot(x,y2,color='red') plt.title("data : reduce noise") #print(y) plt.show() fig = plt.figure() ax = fig.subplots() ax.plot(x,y) y2=y2+0.2 ax.plot(x,y2,color='red') plt.title("data : reduce noise") #print(y) plt.show() fig = plt.figure() ax = fig.subplots() x3=x-30 y3=y2 ax.plot(x,y) ax.plot(x3,y3,color='red') plt.title("data : reduce noise") #print(y) plt.show() fig = plt.figure() ax = fig.subplots() y3=y2 y4=y2-0.4 ax.plot(x,y) ax.plot(x3,y4,color='red') ax.plot(x3,y3,color='red') ax.plot(x3,y4,color='red') plt.title("data : reduce noise envelop") #print(y) plt.show() fig = plt.figure() ax = fig.subplots() ax.plot(x,y) ax.plot(x3,y1,color='green') ax.plot(x3,y4,color='red') ax.plot(x3,y3,color='red') ax.plot(x3,y4,color='red') plt.title("data : reduce noise envelop + best fit") #print(y) plt.show() peaks = find_peaks(y2, height = 1, threshold = 0, distance = None , width=10) #print ("Peaks : " ,peaks) height = peaks[1]['peak_heights'] #list of the heights of the peaks peak_pos = x[peaks[0]] #list of the peaks positions #Finding the minima y2 = y*-1 minima = find_peaks(y2, distance = 10) min_pos = x[minima[0]] #list of the minima positions min_height = y2[minima[0]] #list of the mirrored minima heights #Plotting fig = plt.figure() ax = fig.subplots() ax.plot(x,y) ax.scatter(peak_pos, height, color = 'r', s = 25, marker = 'D', label = 'Maxs') ax.scatter(min_pos, min_height*-1, color = 'gold', s = 25, marker = 'X', label = 'Mins') ax.legend() ax.grid() print ("Event Stock Corrlation Graph plot ver 1.1 ") print ("Show Min and Max in any stock - think - tech ltd") plt.show() |
גרף נתוני מקור כולל רעשים :
קובץ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks from scipy.signal import find_peaks import numpy as np import seaborn as sns import pandas as pd import matplotlib.pyplot as plt days=10 total=480*days total=1000 HES=pd.read_csv(r'D:\Stocks\sp-500\HES.csv', nrows=total) HES['x'] = range(len(HES)) #print(HES) y = HES['Open'].values x = HES['x'].values fig = plt.figure() ax = fig.subplots() plt.title("data : pure roboTronix.co.il") ax.plot(x,y) y2=HES['Open'].rolling(40,10).mean() y1=HES['Open'].rolling(40,10).mean() #print(y) #print(y) #defining the x and y arrays fig = plt.figure() ax = fig.subplots() plt.title("data : reduce noise roboTronix.co.il") ax.plot(x,y2) print("data analysis " ) fig = plt.figure() ax = fig.subplots() ax.plot(x,y) ax.plot(x,y2,color='red') plt.title("data : reduce noise roboTronix.co.il") #print(y) plt.show() fig = plt.figure() ax = fig.subplots() ax.plot(x,y) y2=y2+0.2 ax.plot(x,y2,color='red') plt.title("data : reduce noise roboTronix.co.il") #print(y) plt.show() fig = plt.figure() ax = fig.subplots() x3=x-30 y3=y2 ax.plot(x,y) ax.plot(x3,y3,color='red') plt.title("data : reduce noise roboTronix.co.il") #print(y) plt.show() fig = plt.figure() ax = fig.subplots() y3=y2 y4=y2-0.4 ax.plot(x,y) ax.plot(x3,y4,color='red') ax.plot(x3,y3,color='red') ax.plot(x3,y4,color='red') plt.title("data : reduce noise envelop roboTronix.co.il") #print(y) plt.show() fig = plt.figure() ax = fig.subplots() ax.plot(x,y) ax.plot(x3,y1,color='green') ax.plot(x3,y4,color='red') ax.plot(x3,y3,color='red') ax.plot(x3,y4,color='red') plt.title("data : reduce noise envelop + best fit roboTronix.co.il") #print(y) plt.show() peaks = find_peaks(y2, height = 1, threshold = 0, distance = None , width=10) #print ("Peaks : " ,peaks) height = peaks[1]['peak_heights'] #list of the heights of the peaks peak_pos = x[peaks[0]] #list of the peaks positions #Finding the minima ym = y3*-1 minima = find_peaks(ym ,distance = 70) min_pos = x3[minima[0]] #list of the minima positions min_height = ym[minima[0]] #list of the mirrored minima heights #Plotting fig = plt.figure() ax = fig.subplots() plt.title("data : Min , Max points , roboTronix.co.il") ax.plot(x2,y3) ax.scatter(peak_pos, height, color = 'r', s = 25, marker = 'D', label = 'Maxs') ax.scatter(min_pos, min_height*-1, color = 'green', s = 10, marker = 'P', label = 'Mins') ax.legend() ax.grid() #print ("Event Stock Corrlation Graph plot ver 1.1 ") print ("Show Min and Max roboTronix.co.il") plt.show() |
חישוב נגזרת
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import matplotlib.pyplot as plt import numpy as np #Credit #https://www.math.ubc.ca/~pwalls/math-python/integration/riemann-sums/ def derivative(f,a,method='central',h=0.01): '''Compute the difference formula for f'(a) with step size h. Parameters ---------- f : function Vectorized function of one variable a : number Compute derivative at x = a method : string Difference formula: 'forward', 'backward' or 'central' h : number Step size in difference formula Returns ------- float Difference formula: central: f(a+h) - f(a-h))/2h forward: f(a+h) - f(a))/h backward: f(a) - f(a-h))/h ''' if method == 'central': return (f(a + h) - f(a - h))/(2*h) elif method == 'forward': return (f(a + h) - f(a))/h elif method == 'backward': return (f(a) - f(a - h))/h else: raise ValueError("Method must be 'central', 'forward' or 'backward'.") x = np.linspace(-2,2,100) f = lambda x: (2*x**2 + 2*x + 1) y = f(x) dydx = derivative(f,x) print("dydx",type(dydx) , "\r\n",dydx) # axes fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.spines['left'].set_position('center') ax.spines['bottom'].set_position('center') ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') # plot the functions plt.plot(x,y, 'b', label='y') plt.plot(x,dydx, 'r', label='dydx') plt.legend(loc='upper left') # show the plot plt.show() |
קורלציית פירסון
גרפים – יצוג גרפים קריאת נתונים
קריאת מידע וניתוח , והצגה בגרף – מקובץ CSV
קריאת מידע וניתוח , והצגה בגרף מ SDCARD
קריאת מידע וניתוח , והצגה בגרף מ JSON XML
קריאת מידע וניתוח , והצגה בגרף מ WIFI SOCKET
תרגיל כיתה – ניסוי מעבדה – DSP UART
- קליטת נתונים על ידי מיקרו בקר – שליחת נתונים בזמן אמת ב UART למחשב PC
- קלוט על ידי מיקרו מעבד כ 4 שניות של נתונים , ב 10 ביט והעבר ל PC
- הצג על מחשב PC גרף בפיטון את האות הנקלט על ידי UART
- בצע קונבולוציה – של חלון 10 – הצג על גרף
- חשב והדפס ממוצע, סטיית תקן , ערך גבוה ביותר וערך נמוך — אחרי החלקה
- בצע TOGGLE בלד כתום כל דגימה
- בתחילת דגימה הדלק לד ירוק , סוף דגימה כבה כל הלדים , המתן 1 דקה בין דגימה לדגימה
תרגיל כיתה – ניסוי מעבדה – DSP WIFI + ROUTER
- קליטת נתונים על ידי מיקרו בקר – שליחת נתונים בזמן אמת ב WIFI CLIENT SERVER למחשב PC
- קלוט על ידי מיקרו מעבד כ 4 שניות של נתונים , ב 10 ביט והעבר ל PC
- הצג על מחשב PC גרף בפיטון את האות הנקלט על ידי שימוש ב SOCKET , כאשר ה PC הינו שרת , מיקרו בקר לקוח
- בצע קונבולוציה – של חלון 10 – הצג על גרף
- חשב והדפס ממוצע, סטיית תקן , ערך גבוה ביותר וערך נמוך — אחרי החלקה
- בצע TOGGLE בלד כתום כל דגימה
- בתחילת דגימה הדלק לד ירוק , סוף דגימה כבה כל הלדים , המתן 1 דקה בין דגימה לדגימה
הצגת גרפים בארדואינו :
https://arduinogetstarted.com/tutorials/arduino-serial-plotter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-serial-plotter */ void setup() { Serial.begin(9600); } void loop() { int y1 = analogRead(A0); Serial.println(y1); delay(100); } |
למה צריך DSP
גרפים ופוקציה
משתנה למבדה
1 2 |
x = lambda a: a + 10 print(x(5)) |
פלט 15
פלוט :13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# learn python lesson 4 , www.robotronix.co.il import matplotlib.pyplot as plt import numpy as np x = np.linspace(-2,2,100) # the function y = x**2-2 # setting the axes at the centre fig = plt.figure() # Add an Axes to the figure as part of a subplot arrangement. // default: (1, 1, 1) ax = fig.add_subplot(1, 1, 1) ax.spines['left'].set_position('center') ax.spines['left'].set_color('blue') ax.spines['bottom'].set_position('center') ax.spines['bottom'].set_color('green') ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') # plot the function r='red' plt.plot(x,y, 'red') # show the plot plt.show() import matplotlib.pyplot as plt import numpy as np # 20 linearly spaced numbers x = np.linspace( -np.pi , np.pi ,20) print(x) # function y = np.sin(x) print("print y array \r\n",y) # setting the axes at the centre fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.spines['left'].set_position('center') ax.spines['bottom'].set_position('center') ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') # plot the function plt.plot(x,y, 'b') # b = blue # show the plot plt.show() import matplotlib.pyplot as plt import numpy as np # 20 linearly spaced numbers x = np.linspace(-np.pi ,np.pi ,60) # function y1 = 1*np.sin(x) y2 = 2*np.sin(2*x) y3 = 3*np.sin(4*x) # axes fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.spines['left'].set_position('center') ax.spines['bottom'].set_position('center') ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') # plot the functions #x = np.linspace(-np.pi ,np.pi ,20) plt.plot(x ,y1, 'b', label='y1=sin(x)') plt.plot(x ,y2, 'r', label='y2=2sin(2x)') plt.plot(x ,y3, 'y', label='y3=3sin(4x)') plt.legend(loc='upper left') # show the plot plt.show() import matplotlib.pyplot as plt import numpy as np # 20 linearly spaced numbers x = np.linspace(-np.pi,np.pi,20) # function y1 = 1*np.sin(x) y2 = 1*np.cos(x) # axes fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.spines['left'].set_position('center') ax.spines['bottom'].set_position('center') ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') # plot the functions plt.plot(x,y1, 'b', label='y1=sin(x)') plt.plot(x,y2, 'r', label='y2=cos(x)') plt.legend(loc='upper right') # show the plot plt.show() |
גרף e
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Python import matplotlib.pyplot as plt import numpy as np # 20 linearly spaced numbers x = np.linspace(-10,10,200) # function y1 = 1*np.exp(x) y2 = -1*np.exp(x) # axes fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.spines['left'].set_position('center') ax.spines['bottom'].set_position('center') ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.yaxis.set_ticks_position('left') # plot the functions plt.plot(x,y1, 'b', label='y1=exp(x)') plt.plot(x,y2, 'r', label='y2=-exp(x)') plt.legend(loc='upper left') # show the plot plt.show() print("x",type(x)) print("y1",type(y1)) |
דרך שניה לקרחת את הפונקציה y = 2*x**2 + 2*x + 1 , לגזור אותה אלגברית ואז להציב – גם זה טוב ! אבל זה בתנאי שיש פונקציה
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import numpy as np import matplotlib.pyplot as plt # Define the function y = 2*x**2 + 2*x + 1 def y(x): return 2*x**2 + 2*x + 1 # Define the derivative of the function def y_derivative(x): return 4*x + 2 # Generate x values from -10 to 10 in steps of 20 x = np.arange(-10, 10, 20) # Calculate y and y_derivative for each x value y_values = y(x) y_derivative_values = y_derivative(x) |
אינטגל :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# learn python lesson 4 , www.robotronix.co.il import matplotlib.pyplot as plt import numpy as np #Credit #https://www.math.ubc.ca/~pwalls/math-python/integration/riemann-sums/ f = lambda x : 2*x**2+5 a = 0; b = 5; N = 50 n = 10 # Use n*N+1 points to plot the function smoothly x = np.linspace(a,b,N+1) y = f(x) X = np.linspace(a,b,n*N+1) Y = f(X) plt.figure(figsize=(15,5)) plt.subplot(1,3,2) plt.plot(X,Y,'b') x_mid = (x[:-1] + x[1:])/2 # Midpoints y_mid = f(x_mid) plt.plot(x_mid,y_mid,'b.',markersize=10) plt.bar(x_mid,y_mid,width=(b-a)/N,alpha=0.2,edgecolor='b') plt.title('Midpoint Riemann Sum, N = {}'.format(N)) plt.show() |
פילטרים : low pass , band pass ; hi -pass filters
תקרגיל כיתה :
הרץ את הדוגמאות הבאות
הרץ את התרגיל בארדואינו :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import numpy as np from scipy.signal import butter, lfilter, freqz import matplotlib.pyplot as plt def butter_lowpass(cutoff, fs, order=5): nyq = 0.5 * fs normal_cutoff = cutoff / nyq b, a = butter(order, normal_cutoff, btype='low', analog=False) return b, a def butter_lowpass_filter(data, cutoff, fs, order=5): b, a = butter_lowpass(cutoff, fs, order=order) y = lfilter(b, a, data) return y # Setting standard filter requirements. order = 6 fs = 30.0 cutoff = 3.667 b, a = butter_lowpass(cutoff, fs, order) # Plotting the frequency response. w, h = freqz(b, a, worN=8000) plt.subplot(2, 1, 1) plt.plot(0.5*fs*w/np.pi, np.abs(h), 'b') plt.plot(cutoff, 0.5*np.sqrt(2), 'ko') plt.axvline(cutoff, color='k') plt.xlim(0, 0.5*fs) plt.title("Lowpass Filter Frequency Response") plt.xlabel('Frequency [Hz]') plt.grid() # Creating the data for filteration T = 5.0 # value taken in seconds n = int(T * fs) # indicates total samples t = np.linspace(0, T, n, endpoint=False) data = np.sin(1.2*2*np.pi*t) + 1.5*np.cos(9*2*np.pi*t) + 0.5*np.sin(12.0*2*np.pi*t) # Filtering and plotting y = butter_lowpass_filter(data, cutoff, fs, order) plt.subplot(2, 1, 2) plt.plot(t, data, 'b-', label='data') plt.plot(t, y, 'g-', linewidth=2, label='filtered data') plt.xlabel('Time [sec]') plt.grid() plt.legend() plt.subplots_adjust(hspace=0.35) plt.show() |
גלי קול פיטון
תרגיל כיתה לבנות ספקטרום אנלייזר
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import cv2 image = cv2.imread('rgb.png') B, G, R = cv2.split(image) # Corresponding channels are separated cv2.imshow("original", image) cv2.waitKey(0) cv2.imshow("blue", B) cv2.waitKey(0) cv2.imshow("Green", G) cv2.waitKey(0) cv2.imshow("red", R) cv2.waitKey(0) cv2.destroyAllWindows() |
1 |
cv2.add(img1, img2) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# Python program to illustrate # arithmetic operation of # addition of two images # organizing imports import cv2 import numpy as np # path to input images are specified and # images are loaded with imread command image1 = cv2.imread('input1.jpg') image2 = cv2.imread('input2.jpg') # cv2.addWeighted is applied over the # image inputs with applied parameters weightedSum = cv2.addWeighted(image1, 0.5, image2, 0.4, 0) # the window showing output image # with the weighted sum cv2.imshow('Weighted Image', weightedSum) # De-allocate any associated memory usage if cv2.waitKey(0) & 0xff == 27: cv2.destroyAllWindows() |
חיסור תמונות
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# Python program to illustrate # arithmetic operation of # subtraction of pixels of two images # organizing imports import cv2 import numpy as np # path to input images are specified and # images are loaded with imread command image1 = cv2.imread('input1.jpg') image2 = cv2.imread('input2.jpg') # cv2.subtract is applied over the # image inputs with applied parameters sub = cv2.subtract(image1, image2) # the window showing output image # with the subtracted image cv2.imshow('Subtracted Image', sub) # De-allocate any associated memory usage if cv2.waitKey(0) & 0xff == 27: cv2.destroyAllWindows() |
פעלות לוגיות על תמונה AND
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# Python program to illustrate # arithmetic operation of # bitwise AND of two images # organizing imports import cv2 import numpy as np # path to input images are specified and # images are loaded with imread command img1 = cv2.imread('input1.png') img2 = cv2.imread('input2.png') # cv2.bitwise_and is applied over the # image inputs with applied parameters dest_and = cv2.bitwise_and(img2, img1, mask = None) # the window showing output image # with the Bitwise AND operation # on the input images cv2.imshow('Bitwise And', dest_and) # De-allocate any associated memory usage if cv2.waitKey(0) & 0xff == 27: cv2.destroyAllWindows() |
OR בין שתי תמונות
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# Python program to illustrate # arithmetic operation of # bitwise OR of two images # organizing imports import cv2 import numpy as np # path to input images are specified and # images are loaded with imread command img1 = cv2.imread('input1.png') img2 = cv2.imread('input2.png') # cv2.bitwise_or is applied over the # image inputs with applied parameters dest_or = cv2.bitwise_or(img2, img1, mask = None) # the window showing output image # with the Bitwise OR operation # on the input images cv2.imshow('Bitwise OR', dest_or) # De-allocate any associated memory usage if cv2.waitKey(0) & 0xff == 27: cv2.destroyAllWindows() |
XOR בין שתי תמונות
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# Python program to illustrate # arithmetic operation of # bitwise XOR of two images # organizing imports import cv2 import numpy as np # path to input images are specified and # images are loaded with imread command img1 = cv2.imread('input1.png') img2 = cv2.imread('input2.png') # cv2.bitwise_xor is applied over the # image inputs with applied parameters dest_xor = cv2.bitwise_xor(img1, img2, mask = None) # the window showing output image # with the Bitwise XOR operation # on the input images cv2.imshow('Bitwise XOR', dest_xor) # De-allocate any associated memory usage if cv2.waitKey(0) & 0xff == 27: cv2.destroyAllWindows() |
אופרטור NOT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# Python program to illustrate # arithmetic operation of # bitwise NOT on input image # organizing imports import cv2 import numpy as np # path to input images are specified and # images are loaded with imread command img1 = cv2.imread('input1.png') img2 = cv2.imread('input2.png') # cv2.bitwise_not is applied over the # image input with applied parameters dest_not1 = cv2.bitwise_not(img1, mask = None) dest_not2 = cv2.bitwise_not(img2, mask = None) # the windows showing output image # with the Bitwise NOT operation # on the 1st and 2nd input image cv2.imshow('Bitwise NOT on image 1', dest_not1) cv2.imshow('Bitwise NOT on image 2', dest_not2) # De-allocate any associated memory usage if cv2.waitKey(0) & 0xff == 27: cv2.destroyAllWindows() |
או למשל התוצאה הבאה
שינוי גודל תמונה – שימושי ביותר !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import cv2 import numpy as np import matplotlib.pyplot as plt image = cv2.imread(r"test.png", 1) # Loading the image half = cv2.resize(image, (0, 0), fx = 0.1, fy = 0.1) bigger = cv2.resize(image, (1050, 1610)) stretch_near = cv2.resize(image, (780, 540), interpolation = cv2.INTER_LINEAR) Titles =["Original", "Half", "Bigger", "Interpolation Nearest"] images =[image, half, bigger, stretch_near] count = 4 for i in range(count): plt.subplot(2, 2, i + 1) plt.title(Titles[i]) plt.imshow(images[i]) plt.show() |
https://www.geeksforgeeks.org/opencv-python-tutorial/