├── .github └── workflows │ └── python-package.yml ├── LICENSE ├── README.md ├── Uygulama3 Görsel hakkında bilgi alma.py ├── elma.jpg ├── gol_manzarasi.jpeg ├── kirmizi_ferrari.jpg ├── kirmizi_togg.jpg ├── kirmizi_togg2.jpg ├── kitap.jpg ├── kizil_cam.jpeg ├── kizil_sac.jpg ├── kucuk_sehir_goruntusu.jpeg ├── manzara.png ├── mavi_togg.jpg ├── panorama1.jpg ├── panorama1_1.jpg ├── panorama2.jpg ├── requirements.txt ├── sari_sac.jpg ├── satranc3x3.jpg ├── sehir_goruntusu.jpeg ├── siyah_sacli.jpg ├── siyah_sacli3.jpg ├── siyah_sacli4.jpg ├── siyah_sacli_erkek.jpg ├── u2_gorsel_is_dilimleme.py ├── u3_gorsel_hknd_bilgi_detayli.py ├── u4_farkli_okuma_mod.py ├── u5_gradio_interface_SB.py ├── u6_RenkDegistirmeGradio.py ├── u6_araba.py ├── u6_kirmizi_elma.py ├── u6_kizil_sac.py ├── uygulama 10 kameradana görüntü akışı.py ├── uygulama 12 gorsel kirpma.py ├── uygulama 13 görüntüyü yeniden boyutlandırma.py ├── uygulama 14 görüntüyü yenidnen boyutlandırma 2.py ├── uygulama 15 görseli dondurme.py ├── uygulama 4 farklı okuma modları.py ├── uygulama 5 sayıalrdan görüntüye.py ├── uygulama 6 renk uzayı dönüşümü.py ├── uygulama 7 kırmızı yeşil elma.py ├── uygulama 8 araba renk dönüşümü.py ├── uygulama 9_dosya_uzanti.py ├── uygulama11 piksellere erişim ve manipülasyon.py ├── uygulama1_openCV_versiyon.py ├── uygulama2_gorsel_islemleri.py ├── yeni_resim.jpg ├── yeni_sehir_goruntusu.jpeg ├── yeni_sehir_goruntusu2.jpeg ├── yesil_elma.jpg └── zoom_kodlar ├── data └── readme.md ├── haarcascade_frontalface_default.xml ├── readme.md ├── u10_webcam_sb.py ├── u11_web_renk_kanali.py ├── u12_Gradio_filtre_uyg.py ├── u12v2_gradio_fdilter.py ├── u13piksel_man.py ├── u14_gorsel_kirpma.py ├── u15_goruntu_boy.py ├── u16_gorsel_cevirme.py ├── u17_cizgi_metin.py ├── u18_geometrik_Sekiller.py ├── u19_geometrik_oruntu.py ├── u1opencv_ver.py ├── u20_fraktal.py ├── u21_ozellik_benzerlik_calismasi.py ├── u22_panorama.py ├── u23_reg_of_in.py ├── u2gorsel_islemleri.py ├── u3gorselhknbilgialma.py ├── u4farkli_okuma_modlari.py ├── u4v2_nostalji.py ├── u5kirmizielma.py ├── u6_renk_kanallari.py ├── u7_dosya_uzantisi.py ├── u8_video_renkkanal.py └── u9_web_cam.py /.github/workflows/python-package.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a variety of Python versions 2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python 3 | 4 | name: Python package 5 | 6 | on: 7 | push: 8 | branches: [ "main" ] 9 | pull_request: 10 | branches: [ "main" ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | strategy: 17 | fail-fast: false 18 | matrix: 19 | python-version: ["3.9", "3.10", "3.11"] 20 | 21 | steps: 22 | - uses: actions/checkout@v4 23 | - name: Set up Python ${{ matrix.python-version }} 24 | uses: actions/setup-python@v3 25 | with: 26 | python-version: ${{ matrix.python-version }} 27 | - name: Install dependencies 28 | run: | 29 | python -m pip install --upgrade pip 30 | python -m pip install flake8 pytest 31 | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 32 | - name: Lint with flake8 33 | run: | 34 | # stop the build if there are Python syntax errors or undefined names 35 | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics 36 | # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide 37 | flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics 38 | - name: Test with pytest 39 | run: | 40 | pytest 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Dr. Murat ALTUN 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TechIstComputerVision -------------------------------------------------------------------------------- /Uygulama3 Görsel hakkında bilgi alma.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | # Görüntüyü yükleme 4 | image = cv2.imread('yesil_elma.jpg') 5 | 6 | # Görüntünün boyutlarını al (yükseklik, genişlik ve kanal sayısı) 7 | height, width, channels = image.shape 8 | 9 | # Görüntünün veri tipini al 10 | data_type = image.dtype 11 | 12 | # Bilgileri yazdır 13 | print(f"Görüntü Yüksekliği: {height} piksel") 14 | print(f"Görüntü Genişliği: {width} piksel") 15 | print(f"Kanal Sayısı: {channels}") 16 | print(f"Veri Tipi: {data_type}") 17 | 18 | # Görüntüyü göster (isteğe bağlı) 19 | cv2.imshow("Goruntu", image) 20 | cv2.waitKey(0) 21 | cv2.destroyAllWindows() 22 | -------------------------------------------------------------------------------- /elma.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/elma.jpg -------------------------------------------------------------------------------- /gol_manzarasi.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/gol_manzarasi.jpeg -------------------------------------------------------------------------------- /kirmizi_ferrari.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/kirmizi_ferrari.jpg -------------------------------------------------------------------------------- /kirmizi_togg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/kirmizi_togg.jpg -------------------------------------------------------------------------------- /kirmizi_togg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/kirmizi_togg2.jpg -------------------------------------------------------------------------------- /kitap.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/kitap.jpg -------------------------------------------------------------------------------- /kizil_cam.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/kizil_cam.jpeg -------------------------------------------------------------------------------- /kizil_sac.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/kizil_sac.jpg -------------------------------------------------------------------------------- /kucuk_sehir_goruntusu.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/kucuk_sehir_goruntusu.jpeg -------------------------------------------------------------------------------- /manzara.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/manzara.png -------------------------------------------------------------------------------- /mavi_togg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/mavi_togg.jpg -------------------------------------------------------------------------------- /panorama1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/panorama1.jpg -------------------------------------------------------------------------------- /panorama1_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/panorama1_1.jpg -------------------------------------------------------------------------------- /panorama2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/panorama2.jpg -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | gradio 2 | opencv-python 3 | numpy 4 | -------------------------------------------------------------------------------- /sari_sac.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/sari_sac.jpg -------------------------------------------------------------------------------- /satranc3x3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/satranc3x3.jpg -------------------------------------------------------------------------------- /sehir_goruntusu.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/sehir_goruntusu.jpeg -------------------------------------------------------------------------------- /siyah_sacli.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/siyah_sacli.jpg -------------------------------------------------------------------------------- /siyah_sacli3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/siyah_sacli3.jpg -------------------------------------------------------------------------------- /siyah_sacli4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/siyah_sacli4.jpg -------------------------------------------------------------------------------- /siyah_sacli_erkek.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/siyah_sacli_erkek.jpg -------------------------------------------------------------------------------- /u2_gorsel_is_dilimleme.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | #imread fonksiyonu görsel okumak için kullanılır 4 | img=cv.imread(r'data\satranc3x3.jpg') 5 | 6 | 7 | print(img) 8 | print (img[300:500,200:300]) 9 | 10 | # ikinci satırdaki kırmızı kareyi liste olarak al 11 | #600x600 lük resim 12 | kirmizi_kare=img[200:399,:199] 13 | print (img[200:399,:199]) 14 | 15 | #imshow resmi göstermek için kullanılır 16 | cv.imshow('kirmizi kare',kirmizi_kare) 17 | cv.imshow('Satanç Görseli', img) 18 | #görseli göster ve bekle 19 | #klavyeden bir tuşa basılınca 20 | cv.waitKey(0) 21 | #pencereleri kapat 22 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /u3_gorsel_hknd_bilgi_detayli.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | #resmi al 3 | img=cv.imread(r'data/yesil_elma.jpg') 4 | 5 | yukseklik=img.shape[0] 6 | genislik=img.shape[1] 7 | kanal_sayisi=img.shape[2] 8 | 9 | print ("----------Resim Özellikleri-----------") 10 | print(f"Görsel genişlikxyükseklik:{genislik}x{yukseklik}") 11 | print(f"Görsel Toplam piksel:{genislik*yukseklik}") 12 | print (f"Görsel kanal sayısı:{kanal_sayisi}") 13 | #Renkli görseller için BGR 3 kanal bulundurur ve 3 elemanlı bir liste 14 | #Gray scale de ise 1 kanal bulunur ve terk bir sayı 15 | #Her renkli piksel 3 elemanlı bir liste içerirken siyah beyaz resim pikseli tek bir sayıdır 16 | # değerler 09-255 arasındadır 17 | print('Veri türü:', img.dtype) 18 | 19 | # size toplam eleman sayısı 20 | #piksel sayısı * kanal sayısı 21 | print("Eleman sayısı", img.size) 22 | print ("Boyut:", img.size*img.itemsize) # veri tipi 1 Byte yer kaplıyor 23 | print ("Bellekte kapladığı alan KB :", img.size*img.itemsize/1024) 24 | 25 | import os 26 | dosya_boyutu=os.path.getsize(r'data/yesil_elma.jpg') 27 | print ("Dosya Boyutu Diskte kapladığı alan:", dosya_boyutu/1024, "KB") 28 | 29 | -------------------------------------------------------------------------------- /u4_farkli_okuma_mod.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | #dosya yolunu tanımla 3 | path_strnc=r'data/satranc3x3.jpg' 4 | path_elma=r'data/elma.jpg' 5 | #Renkli modda oku 6 | img_color=cv.imread(path_strnc,cv.IMREAD_COLOR) 7 | img_elma_color=cv.imread(path_elma,1) 8 | #parametre değeri cv.IMREAD_COLOR yerine 1 de yazılabilir 9 | #img_color=cv.imread(path_strnc,cv.1) 10 | #varsayılan değeri bu şekilde 11 | 12 | #siyah beyaz modda oku 13 | img_gry=cv.imread(path_strnc,0) 14 | img_elma_gry=cv.imread(path_elma,cv.IMREAD_GRAYSCALE) 15 | 16 | # 0 YERİNE cv.IMREAD_GRAYSCALE 17 | 18 | # ciktiyi göster 19 | cv.imshow("Renkli Cikti",img_color) 20 | cv.imshow("kirmizi Elma",img_elma_color) 21 | cv.imshow("SB Elma",img_elma_gry) 22 | cv.imshow("Siyah Beyaz Ciktisi", img_gry) 23 | #bir tuşa basılana kadar bekle 24 | cv.waitKey(0) 25 | cv.destroyAllWindows() 26 | 27 | #Renkli fotoyu siyah beyaza çevirirken 28 | #Y=0.299R+0.587G+0.114B -------------------------------------------------------------------------------- /u5_gradio_interface_SB.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | import numpy as np 3 | import cv2 as cv 4 | 5 | def convert_img_gry(image): 6 | gray_img=cv.cvtColor(image,cv.COLOR_BGR2GRAY) 7 | return gray_img 8 | 9 | #Gradio arayüzü oluştur 10 | interface=gr.Interface( 11 | fn=convert_img_gry, 12 | inputs=gr.Image(type="numpy"), 13 | outputs="image", 14 | title="Gri Tonlamalı Resme Dönüştür", 15 | description="Bir görüntü yükleyin ve onu siyah beyaza çevirin" 16 | ) 17 | 18 | #Uygulamayı çalıştır 19 | if __name__== "__main__": 20 | interface.launch(share=True) -------------------------------------------------------------------------------- /u6_RenkDegistirmeGradio.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import gradio as gr 3 | import numpy as np 4 | 5 | def change_image_color(img, option, color_from=None, color_to=None): 6 | # Orijinal görüntüyü oku 7 | img_bgr = img.copy() 8 | 9 | if option == "R-G (Kırmızı Yeşile)": 10 | # Kırmızıları yeşil yap 11 | b, g, r = cv.split(img_bgr) 12 | new_img = cv.merge([b, r, g]) 13 | return new_img 14 | elif option == "G-R (Yeşil Kırmızıya)": 15 | # Yeşili kırmızıya çevir 16 | b, g, r = cv.split(img_bgr) 17 | new_img = cv.merge([b, g, r]) 18 | return new_img 19 | elif option == "R-B (Kırmızı Maviye)": 20 | # Kırmızıyı maviye çevir 21 | b, g, r = cv.split(img_bgr) 22 | new_img = cv.merge([r, g, b]) 23 | return new_img 24 | elif option == "Gri Tonlamalı": 25 | # Gri tonlamalı görüntü 26 | gray_img = cv.cvtColor(img_bgr, cv.COLOR_BGR2GRAY) 27 | return cv.cvtColor(gray_img, cv.COLOR_GRAY2RGB) 28 | elif option == "Özel Renk Dönüşümü" and color_from is not None and color_to is not None: 29 | # Belirli bir rengi başka bir renge dönüştür 30 | color_from_bgr = [int(color_from[i:i+2], 16) for i in (1, 3, 5)] 31 | color_to_bgr = [int(color_to[i:i+2], 16) for i in (1, 3, 5)] 32 | lower_bound = np.array(color_from_bgr, dtype="uint8") 33 | upper_bound = lower_bound 34 | mask = cv.inRange(img_bgr, lower_bound, upper_bound) 35 | img_bgr[mask != 0] = color_to_bgr 36 | return img_bgr 37 | else: 38 | # Orijinal görüntü 39 | return img_bgr 40 | 41 | # Gradio arayüzü tanımla 42 | interface = gr.Interface( 43 | fn=change_image_color, 44 | inputs=[ 45 | gr.Image(type="numpy", label="Resim Yükleyin"), 46 | gr.Dropdown(["Orijinal", "R-G (Kırmızı Yeşile)", "G-R (Yeşil Kırmızıya)", "R-B (Kırmızı Maviye)", "Gri Tonlamalı", "Özel Renk Dönüşümü"], label="Dönüşüm Seçin"), 47 | gr.ColorPicker(label="Dönüştürülecek Renk"), 48 | gr.ColorPicker(label="Yeni Renk") 49 | ], 50 | outputs="image", 51 | title="Renk Dönüştürme Aracı", 52 | description="Resmin rengini dönüştürmek için bir seçenek belirleyin ve isterseniz belirli bir rengi başka bir renge dönüştürün." 53 | ) 54 | 55 | # Arayüzü başlat 56 | interface.launch() 57 | -------------------------------------------------------------------------------- /u6_araba.py: -------------------------------------------------------------------------------- 1 | # Renk kanallarını kullanarak elmanın rengini değiştireceğiz 2 | import cv2 as cv 3 | dosya_yolu=r'data/kirmizi_ferrari.jpg' 4 | img_bgr=cv.imread(dosya_yolu) 5 | 6 | 7 | b,g,r=cv.split(img_bgr) 8 | 9 | # renk kanalarının değerini değiştir. 10 | #kirmizilari yeşil yap 11 | yesil_araba=cv.merge([b,r,g]) 12 | mavi_araba=cv.merge([r,g,b]) 13 | sari_araba=cv.merge([b,r,r]) 14 | mor_araba=cv.merge([r,g,r]) 15 | beyaz_araba=cv.merge([r,r,r]) 16 | sb_araba=cv.imread(dosya_yolu,0) 17 | # orijinali göster 18 | cv.imshow("Orijinal", img_bgr) 19 | 20 | #değiştirilmiş yeşil 21 | cv.imshow("Yesil", yesil_araba) 22 | 23 | #değiştirilmiş mavi 24 | cv.imshow("Mavi", mavi_araba) 25 | 26 | #Sarı renkte bir araç 27 | #değiştirilmiş mavi 28 | cv.imshow("Sarı", sari_araba) 29 | 30 | #değiştirilmiş mor 31 | cv.imshow("Mor", mor_araba) 32 | 33 | #değiştirilmiş beyaz 34 | cv.imshow("Beyaz", beyaz_araba) 35 | 36 | #Gri Tonlamalı 37 | #Pencerelerin adı aynı olmamalı 38 | cv.imshow("Gri Ton",sb_araba) 39 | 40 | cv.waitKey() 41 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /u6_kirmizi_elma.py: -------------------------------------------------------------------------------- 1 | # Renk kanallarını kullanarak elmanın rengini değiştireceğiz 2 | import cv2 as cv 3 | img_bgr=cv.imread(r'data/elma.jpg') 4 | 5 | 6 | 7 | b,g,r=cv.split(img_bgr) 8 | 9 | # renk kanalarının değerini değiştir. 10 | #kirmizilari yeşil yap 11 | yesil_elma=cv.merge([b,r,g]) 12 | mavi_elma=cv.merge([r,g,b]) 13 | sb_elma=cv.imread(r'data/elma.jpg',0) 14 | # orijinali göster 15 | cv.imshow("Orijinal", img_bgr) 16 | 17 | #değiştirilmiş yeşil 18 | cv.imshow("Yesil", yesil_elma) 19 | 20 | #değiştirilmiş mavi 21 | cv.imshow("Mavi", mavi_elma) 22 | 23 | #Gri Tonlamalı 24 | #Pencerelerin adı aynı olmamalı 25 | cv.imshow("Gri Ton",sb_elma) 26 | 27 | cv.waitKey() 28 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /u6_kizil_sac.py: -------------------------------------------------------------------------------- 1 | # Renk kanallarını kullanarak elmanın rengini değiştireceğiz 2 | import cv2 as cv 3 | #dosya_yolu=r'data/kizil_sac3.jpg' 4 | dosya_yolu=r'data/kizil_sac.jpg' 5 | img_bgr=cv.imread(dosya_yolu) 6 | 7 | 8 | b,g,r=cv.split(img_bgr) 9 | 10 | # renk kanalarının değerini değiştir. 11 | #kirmizilari yeşil yap 12 | yesil_araba=cv.merge([b,r,g]) 13 | mavi_araba=cv.merge([r,g,b]) 14 | sari_araba=cv.merge([b,r,r]) 15 | mor_araba=cv.merge([r,g,r]) 16 | sb_araba=cv.imread(dosya_yolu,0) 17 | # orijinali göster 18 | cv.imshow("Orijinal", img_bgr) 19 | 20 | #değiştirilmiş yeşil 21 | cv.imshow("Yesil", yesil_araba) 22 | 23 | #değiştirilmiş mavi 24 | cv.imshow("Mavi", mavi_araba) 25 | 26 | #Sarı renkte bir araç 27 | #değiştirilmiş mavi 28 | cv.imshow("Sarı", sari_araba) 29 | 30 | #değiştirilmiş mor 31 | cv.imshow("Mor", mor_araba) 32 | 33 | #Gri Tonlamalı 34 | #Pencerelerin adı aynı olmamalı 35 | cv.imshow("Gri Ton",sb_araba) 36 | 37 | cv.waitKey() 38 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /uygulama 10 kameradana görüntü akışı.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | # Kamera yakalamasını başlat 4 | cap = cv.VideoCapture(0) 5 | 6 | while True: 7 | # Her bir çerçeveyi sırayla yakala 8 | ret, frame = cap.read(0) 9 | 10 | # Elde edilen çerçeveyi göster 11 | cv.imshow('Kamera', frame) 12 | 13 | # Eğer 'q' tuşuna basılırsa döngüden çık 14 | if cv.waitKey(1) & 0xFF == ord('q'): 15 | break 16 | -------------------------------------------------------------------------------- /uygulama 12 gorsel kirpma.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | # Resmi yükle 4 | img = cv2.imread('gol_manzarasi.jpeg') 5 | 6 | # Resmin boyutlarını al 7 | h, w, _ = img.shape 8 | 9 | # Kırpılacak alanın başlangıç ve bitiş koordinatlarını hesapla 10 | start_row, start_col = int(h * .25), int(w * .25) 11 | end_row, end_col = int(h * .75), int(w * .75) 12 | 13 | # Resmi kırp 14 | cropped_img = img[start_row:end_row, start_col:end_col] 15 | 16 | # Kırpılmış resmi göster 17 | cv2.imshow('Crop', cropped_img) 18 | cv2.waitKey(0) 19 | cv2.destroyAllWindows() 20 | -------------------------------------------------------------------------------- /uygulama 13 görüntüyü yeniden boyutlandırma.py: -------------------------------------------------------------------------------- 1 | #Bu kod belirli bir örnekleme fakörü kullanarak resmi yeniden boyutlandırmaktadır. 2 | import cv2 3 | 4 | # Resmi yükle 5 | img = cv2.imread('gol_manzarasi.jpeg') 6 | cv2.imshow('Original Image', img) 7 | 8 | # Ölçekleme faktörlerini belirle 9 | fx, fy = 0.5, 0.5 10 | 11 | # Resmi yeniden boyutlandır 12 | resized_img = cv2.resize(img, None, fx=fx, fy=fy) 13 | 14 | # Yeniden boyutlandırılmış resmi göster 15 | cv2.imshow('Resized Image', resized_img) 16 | cv2.waitKey(0) 17 | cv2.destroyAllWindows() 18 | -------------------------------------------------------------------------------- /uygulama 14 görüntüyü yenidnen boyutlandırma 2.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | # Görüntüyü yükle 4 | image = cv2.imread('sehir_goruntusu.jpeg') 5 | 6 | # Yeni piksel boyutlarını belirle 7 | new_width = 256 # Yeni genişlik 8 | new_height = 192 # Yeni yükseklik 9 | new_dimensions = (new_width, new_height) 10 | 11 | # Görüntüyü yeniden boyutlandır 12 | resized_image = cv2.resize(image, new_dimensions) 13 | 14 | # Görüntüyü göster 15 | cv2.imshow('Yeniden Boyutlandirilmis Goruntu', resized_image) 16 | cv2.imwrite('kucuk_sehir_goruntusu.jpeg', resized_image) 17 | # Pencereyi kapat 18 | cv2.waitKey(0) 19 | cv2.destroyAllWindows() 20 | -------------------------------------------------------------------------------- /uygulama 15 görseli dondurme.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | # Görüntüyü yükle 4 | image = cv2.imread('kucuk_sehir_goruntusu.jpeg') 5 | 6 | # Yatay çevirme 7 | flipped_horizontally = cv2.flip(image, 1) 8 | 9 | # Dikey çevirme 10 | flipped_vertically = cv2.flip(image, 0) 11 | 12 | # Görüntüleri göster 13 | cv2.imshow('Orjinal Goruntu', image) 14 | cv2.imshow('Yatay Cevrilmis Goruntu', flipped_horizontally) 15 | cv2.imshow('Dikey Cevrilmis Goruntu', flipped_vertically) 16 | 17 | # Pencereyi kapat 18 | cv2.waitKey(0) 19 | cv2.destroyAllWindows() 20 | -------------------------------------------------------------------------------- /uygulama 4 farklı okuma modları.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | resim_dosyasi="satranc3x3.jpg" 3 | 4 | # Resmi bir numpy dizisi olarak okur (renkli) 5 | img_color = cv2.imread(resim_dosyasi, cv2.IMREAD_COLOR) 6 | #cv2.imread(resim_dosyasi,1) 7 | 8 | # Resmi bir numpy dizisi olarak okur (siyah-beyaz) 9 | img_gray = cv2.imread(resim_dosyasi, cv2.IMREAD_GRAYSCALE) 10 | #cv2.imread(resim_dosyasi,0) 11 | 12 | # Resmi bir numpy dizisi olarak okur (alfa kanalı dahil) 13 | img_alpha = cv2.imread(resim_dosyasi, cv2.IMREAD_UNCHANGED) 14 | #cv2.imread(resim_dosyasi,-1) 15 | 16 | # Resim içeriğini göster 17 | print(img_color) 18 | print(img_gray) 19 | print(img_alpha) 20 | 21 | # Resmi göster başlık ve resim 22 | cv2.imshow('Renkli Resim', img_color) 23 | cv2.imshow('Siyah-Beyaz Resim', img_gray) 24 | cv2.imshow('Alfa Kanali Olan Resim', img_alpha) 25 | 26 | # Bekle ve kapat 27 | cv2.waitKey(0) 28 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /uygulama 5 sayıalrdan görüntüye.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 as cv 3 | # Satranç tahtası boyutları 4 | rows = 3 5 | cols = 3 6 | 7 | # Satranç tahtası renkleri 8 | color1 = [255, 255, 255] # Beyaz (BMB) 9 | color2 = [0, 0, 255] # Kırmızı (MBM) 10 | 11 | # Satranç tahtasını 0 lardan sayı dizisi olarak oluştur. 12 | chessboard = np.zeros((rows*200, cols*200, 3), dtype=np.uint8) 13 | 14 | # Satranç tahtasını renklendir 15 | for i in range(rows): 16 | for j in range(cols): 17 | if (i+j) % 2 == 0: 18 | chessboard[i*200:(i+1)*200, j*200:(j+1)*200] = color1 19 | #beyaz kareler belirleniyor 20 | else: 21 | chessboard[i*200:(i+1)*200, j*200:(j+1)*200] = color2 22 | #kırmızı kareler belirleniyor 23 | # Satranç tahtasını ekrana yazdır 24 | print(chessboard) 25 | 26 | # Resmi ekranda göster 27 | cv.imshow('Satranc Tahtasi', chessboard) 28 | 29 | # Resmi "yeni_resim.jpg" adlı bir dosya olarak kaydet 30 | cv.imwrite('yeni_resim.jpg', chessboard) 31 | 32 | # Bekle ve kapat 33 | cv.waitKey(0) 34 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /uygulama 6 renk uzayı dönüşümü.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | # Resmi bir numpy dizisi olarak okur (BGR) 4 | img_bgr = cv2.imread('satranc3x3.jpg') 5 | 6 | # Resmi RGB renk uzayına dönüştür 7 | img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB) 8 | 9 | # Resimleri ekranda göster 10 | cv2.imshow('BGR Resim', img_bgr) 11 | cv2.imshow('RGB Resim', img_rgb) 12 | 13 | # Bekle ve kapat 14 | cv2.waitKey(0) 15 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /uygulama 7 kırmızı yeşil elma.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy as np 3 | 4 | # Resmi bir numpy dizisi olarak okur (BGR) 5 | img_bgr = cv.imread('elma.jpg') 6 | 7 | # Orijinal resmi ekranda göster 8 | cv.imshow('Kirmizi Elma', img_bgr) 9 | 10 | # Resmi kanallarına ayır 11 | b, g, r = cv.split(img_bgr) 12 | 13 | # Kırmızı ve yeşil kanalları birleştir 14 | img_new = cv.merge((b, r, g)) 15 | 16 | # Yeni resmi ekranda göster 17 | cv.imshow('Yesil Elma', img_new) 18 | 19 | #yeni_resim.jpg adlı bir dosya olarak kaydet 20 | cv.imwrite('yesil_elma.jpg', img_new) 21 | 22 | # Bekle ve kapat 23 | cv.waitKey(0) 24 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /uygulama 8 araba renk dönüşümü.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy as np 3 | 4 | # Resmi oku 5 | img = cv.imread('kirmizi_togg.jpg') 6 | 7 | #Orijinal araba 8 | cv.imshow('Orijinal Araba', img) 9 | 10 | # Resmi BGR formatından kopyala 11 | b, g, r = cv.split(img) 12 | 13 | 14 | 15 | 16 | #Yeşil arabayı Göster 17 | img_green=cv.merge((b,r,g)) 18 | cv.imshow('Yesil Araba', img_green) 19 | 20 | #mavi araba 21 | img_blue = cv.merge((r, g, b)) 22 | 23 | #mavi arabayı göster 24 | cv.imshow('Mavi Araba', img_blue) 25 | cv.imwrite('mavi_togg.jpg',img_blue) 26 | 27 | # Sarı renk, kırmızı ve yeşilin yüksek olduğu bir renktir. 28 | # Bu nedenle, kırmızı ve yeşil kanallarını aynı seviyeye getiririz. 29 | g = r # Yeşil kanalını, kırmızı kanalıyla aynı yap 30 | 31 | # Kanalları birleştir 32 | img_yellow = cv.merge((b, g, r)) 33 | 34 | # Sarı arabayı göster 35 | cv.imshow('Sari Araba', img_yellow) 36 | 37 | 38 | cv.waitKey(0) 39 | cv.destroyAllWindows() 40 | -------------------------------------------------------------------------------- /uygulama 9_dosya_uzanti.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | # Görüntüyü yükle 4 | image = cv2.imread('yesil_elma.jpg') 5 | 6 | # Görüntüyü farklı bir formatda kaydet 7 | cv2.imwrite('yesil_elma.png', image) -------------------------------------------------------------------------------- /uygulama11 piksellere erişim ve manipülasyon.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | # Görüntüyü yükleme 5 | image = cv2.imread('yesil_elma.jpg') 6 | 7 | # Görüntü boyutlarını al 8 | height, width = image.shape[:2] 9 | 10 | 11 | # Beyaz kare için boyut ve başlangıç koordinatları 12 | kare_boyutu = 50 # Örnek olarak 50x50 piksel 13 | # Görüntünün ortasını bul. 14 | baslangic_x = (width // 2)-25 15 | baslangic_y = (height // 2)-25 16 | 17 | # Belirli bir bölgedeki pikselleri beyaza çevir 18 | for y in range(baslangic_y, baslangic_y + kare_boyutu): 19 | for x in range(baslangic_x, baslangic_x + kare_boyutu): 20 | image[y, x] = [255, 255, 255] # Beyaz renk 21 | 22 | # Modifiye edilmiş görüntüyü gösterme 23 | cv2.imshow("Modifiye Goruntu", image) 24 | cv2.waitKey(0) 25 | cv2.destroyAllWindows() 26 | -------------------------------------------------------------------------------- /uygulama1_openCV_versiyon.py: -------------------------------------------------------------------------------- 1 | #ders.1 OpenCV nin kontrolü 2 | import cv2 3 | 4 | # OpenCV sürümünü yazdır 5 | print("OpenCV sürümü:", cv2.__version__) -------------------------------------------------------------------------------- /uygulama2_gorsel_islemleri.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | # Resmi bir numpy dizisi olarak okur. 4 | img = cv2.imread('satranc3x3.jpg') 5 | 6 | #img içeriğini bir sayı dizisi olarak gösterir. 7 | print(img) 8 | 9 | 10 | 11 | # Resmi başlıkla birlikte göster. 12 | cv2.imshow('Resim', img) 13 | 14 | # Bekle ve kapat. 15 | cv2.waitKey(0) 16 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /yeni_resim.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/yeni_resim.jpg -------------------------------------------------------------------------------- /yeni_sehir_goruntusu.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/yeni_sehir_goruntusu.jpeg -------------------------------------------------------------------------------- /yeni_sehir_goruntusu2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/yeni_sehir_goruntusu2.jpeg -------------------------------------------------------------------------------- /yesil_elma.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrMuratAltun/TechIstComputerVision/3abe5134ad6b45ebfdafae4e9fd8cb0ee5f96791/yesil_elma.jpg -------------------------------------------------------------------------------- /zoom_kodlar/data/readme.md: -------------------------------------------------------------------------------- 1 | https://drive.google.com/drive/folders/1dn24MpPf0V0udt8so0mcuZRzuel94dqI?usp=drive_link 2 | -------------------------------------------------------------------------------- /zoom_kodlar/readme.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /zoom_kodlar/u10_webcam_sb.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | #kamerayı başlat 4 | cap=cv.VideoCapture(0) 5 | 6 | while True: 7 | ret,frame=cap.read() 8 | if not ret: 9 | break 10 | gray_frame=cv.cvtColor(frame,cv.COLOR_BGR2GRAY) 11 | hvs_img=cv.cvtColor(frame,cv.COLOR_BGR2HSV) 12 | #hls_img=cv.cvtColor(frame,cv.COLOR_BGR2HLS) 13 | #rgba_img=cv.cvtColor(frame,cv.COLOR_BGR2RGBA) 14 | #rgb_img=cv.cvtColor(frame,cv.COLOR_BGR2RGB) 15 | #Görüntüyü yatay ve dikey çevirme 16 | flipped_img=cv.flip(frame,-1) 17 | #0 dikey çevirme, 1 yatay, -1 de tersine 18 | cv.imshow('kamera ORG',frame) 19 | cv.imshow('kamera',flipped_img) 20 | cv.imshow('kamera gry',gray_frame) 21 | cv.imshow('kamera hvs',hvs_img) 22 | 23 | if cv.waitKey(1) & 0xFF==ord('q'): 24 | break 25 | 26 | #kamerayı kapat 27 | cap.release() 28 | cv.destroyAllWindows() 29 | -------------------------------------------------------------------------------- /zoom_kodlar/u11_web_renk_kanali.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy as np 3 | cap=cv.VideoCapture(0) 4 | 5 | def retro_filter(frame): 6 | frame_sepia=cv.transform(frame, np.matrix( 7 | [[0.272, 0.534, 0.131], 8 | [0.349, 0.686, 0.168], 9 | [0.393, 0.769, 0.189]] 10 | )) 11 | 12 | #Görüntüyü normalize et 13 | frame_sepia=np.clip(frame_sepia, 0,255).astype(np.uint8) 14 | return frame_sepia 15 | 16 | while True: 17 | ret,frame=cap.read() 18 | if not ret: 19 | break 20 | 21 | #b,g,r=cv.split(frame) 22 | #rgb_frame=cv.merge((r,g,b)) 23 | #cv.imshow('RGB Kanal',rgb_frame) 24 | 25 | if cv.waitKey(1) & 0xFF==ord('q'): 26 | break 27 | frame_sepia=retro_filter(frame) 28 | #cv.imshow('Sepia',frame_sepia) 29 | # Sobel filtreleri 30 | sobel_x = np.array([[-1, 0, 1], 31 | [-2, 0, 2], 32 | [-1, 0, 1]]) 33 | 34 | sobel_y = np.array([[1, 2, 1], 35 | [0, 0, 0], 36 | [-1, -2, -1]]) 37 | 38 | # Filtreleri uygula 39 | edges_x = cv.filter2D(frame, -1, sobel_x) 40 | edges_y = cv.filter2D(edges_x, -1, sobel_y) 41 | cv.imshow('Edges', edges_y) 42 | 43 | 44 | cap.release() 45 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u12_Gradio_filtre_uyg.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | import gradio as gr 4 | 5 | # Farklı filtre fonksiyonları 6 | def apply_gaussian_blur(frame): 7 | return cv2.GaussianBlur(frame, (15, 15), 0) 8 | 9 | def apply_sharpening_filter(frame): 10 | kernel = np.array([[0, -1, 0], [-1, 5,-1], [0, -1, 0]]) 11 | return cv2.filter2D(frame, -1, kernel) 12 | 13 | def apply_edge_detection(frame): 14 | return cv2.Canny(frame, 100, 200) 15 | 16 | def apply_invert_filter(frame): 17 | return cv2.bitwise_not(frame) 18 | 19 | def adjust_brightness_contrast(frame, alpha=1.0, beta=50): 20 | return cv2.convertScaleAbs(frame, alpha=alpha, beta=beta) 21 | 22 | def apply_grayscale_filter(frame): 23 | return cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 24 | 25 | # Filtre uygulama fonksiyonu 26 | def apply_filter(filter_type, input_image=None): 27 | if input_image is not None: 28 | frame = input_image 29 | else: 30 | cap = cv2.VideoCapture(0) 31 | ret, frame = cap.read() 32 | cap.release() 33 | if not ret: 34 | return "Web kameradan görüntü alınamadı" 35 | 36 | if filter_type == "Gaussian Blur": 37 | return apply_gaussian_blur(frame) 38 | elif filter_type == "Sharpen": 39 | return apply_sharpening_filter(frame) 40 | elif filter_type == "Edge Detection": 41 | return apply_edge_detection(frame) 42 | elif filter_type == "Invert": 43 | return apply_invert_filter(frame) 44 | elif filter_type == "Brightness": 45 | return adjust_brightness_contrast(frame, alpha=1.0, beta=50) 46 | elif filter_type == "Grayscale": 47 | return apply_grayscale_filter(frame) 48 | 49 | # Gradio arayüzü 50 | with gr.Blocks() as demo: 51 | gr.Markdown("# Web Kameradan Canlı Filtreleme") 52 | 53 | # Filtre seçenekleri 54 | filter_type = gr.Dropdown( 55 | label="Filtre Seçin", 56 | choices=["Gaussian Blur", "Sharpen", "Edge Detection", "Invert", "Brightness", "Grayscale"], 57 | value="Gaussian Blur" 58 | ) 59 | interactive=True 60 | # Görüntü yükleme alanı 61 | input_image = gr.Image(label="Resim Yükle", type="numpy") 62 | 63 | # Çıktı için görüntü 64 | output_image = gr.Image(label="Filtre Uygulandı") 65 | 66 | # Filtre uygula butonu 67 | apply_button = gr.Button("Filtreyi Uygula") 68 | 69 | # Butona tıklanınca filtre uygulama fonksiyonu 70 | apply_button.click(fn=apply_filter, inputs=[filter_type, input_image], outputs=output_image) 71 | 72 | # Gradio arayüzünü başlat 73 | demo.launch() 74 | -------------------------------------------------------------------------------- /zoom_kodlar/u12v2_gradio_fdilter.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | import gradio as gr 4 | 5 | # Farklı filtre fonksiyonları 6 | def apply_gaussian_blur(frame): 7 | return cv2.GaussianBlur(frame, (15, 15), 0) 8 | 9 | def apply_sharpening_filter(frame): 10 | kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]]) 11 | return cv2.filter2D(frame, -1, kernel) 12 | 13 | def apply_edge_detection(frame): 14 | return cv2.Canny(frame, 100, 200) 15 | 16 | def apply_invert_filter(frame): 17 | return cv2.bitwise_not(frame) 18 | 19 | def adjust_brightness_contrast(frame, alpha=1.0, beta=50): 20 | return cv2.convertScaleAbs(frame, alpha=alpha, beta=beta) 21 | 22 | def apply_grayscale_filter(frame): 23 | return cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 24 | 25 | # Filtre uygulama fonksiyonu 26 | def apply_filter(filter_type, input_image=None): 27 | if input_image is not None: 28 | frame = input_image 29 | else: 30 | cap = cv2.VideoCapture(0) 31 | ret, frame = cap.read() 32 | cap.release() 33 | if not ret: 34 | return "Web kameradan görüntü alınamadı" 35 | 36 | if filter_type == "Gaussian Blur": 37 | return apply_gaussian_blur(frame) 38 | elif filter_type == "Sharpen": 39 | return apply_sharpening_filter(frame) 40 | elif filter_type == "Edge Detection": 41 | return apply_edge_detection(frame) 42 | elif filter_type == "Invert": 43 | return apply_invert_filter(frame) 44 | elif filter_type == "Brightness": 45 | return adjust_brightness_contrast(frame, alpha=1.0, beta=50) 46 | elif filter_type == "Grayscale": 47 | return apply_grayscale_filter(frame) 48 | 49 | # Gradio arayüzü 50 | with gr.Blocks() as demo: 51 | gr.Markdown("# Web Kameradan Canlı Filtreleme") 52 | 53 | # Filtre seçenekleri 54 | filter_type = gr.Dropdown( 55 | label="Filtre Seçin", 56 | choices=["Gaussian Blur", "Sharpen", "Edge Detection", "Invert", "Brightness", "Grayscale"], 57 | value="Gaussian Blur" 58 | ) 59 | 60 | # Görüntü yükleme alanı 61 | input_image = gr.Image(label="Resim Yükle", type="numpy") 62 | 63 | # Çıktı için görüntü 64 | output_image = gr.Image(label="Filtre Uygulandı") 65 | 66 | # Görüntü yüklendiğinde filtre uygulama fonksiyonu 67 | input_image.change(fn=apply_filter, inputs=[filter_type, input_image], outputs=output_image) 68 | 69 | # Gradio arayüzünü başlat 70 | demo.launch() 71 | -------------------------------------------------------------------------------- /zoom_kodlar/u13piksel_man.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy as np 3 | 4 | img=cv.imread(r'data/yesil_elma.jpg') 5 | 6 | #görüntü boyutunu alma 7 | height,width=img.shape[:2] 8 | print('Genişlik ve yükseklik:',width,height) 9 | 10 | #beyaz kare 11 | kare_boyut=50 12 | baslangic_x=(width//2)-25 13 | baslangic_y=(height//2)-25 14 | 15 | for y in range(baslangic_y,baslangic_y+kare_boyut): 16 | for x in range(baslangic_x,baslangic_x+kare_boyut): 17 | img[y,x]=[255,255,255] 18 | 19 | cv.imshow('Elma',img) 20 | cv.waitKey(0) 21 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u14_gorsel_kirpma.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | #resmi yükle 4 | img=cv.imread(r'data/gol_manzarasi.jpeg') 5 | 6 | cv.imshow('Gol Manzarasi',img) 7 | 8 | cv.waitKey(0) 9 | cv.destroyAllWindows() 10 | 11 | #yükseklik ve genişlik 12 | h,w=img.shape[:2] 13 | 14 | #kırpılacak alanın başlangıç ve bitiş koordiatlaırnı 15 | start_row,start_col=int(h*.25),int(w*.25) 16 | end_row,end_col=int(h*.75),int(w*.75) 17 | 18 | #resmi kırp 19 | croppped_img=img[start_row:end_row,start_col:end_col] #dilimleme işlemi yap 20 | 21 | cv.imshow('Kırpılmış resim',croppped_img) 22 | cv.waitKey(0) 23 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u15_goruntu_boy.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | #dosya oku 3 | img=cv.imread(r'data/gol_manzarasi.jpeg') 4 | cv.imshow('Orijinal',img) 5 | 6 | #resmi yeniden boyutlandır 7 | #ölçeklendirme 8 | fx,fy=.5,.5 9 | 10 | resized_img=cv.resize(img,None,fx=fx,fy=fy) #,interpolation=cv.INTER_LINEAR 11 | cv.imshow('Resized',resized_img) 12 | 13 | cv.waitKey(0) 14 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u16_gorsel_cevirme.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | img=cv.imread(r'data/gol_manzarasi.jpeg') 4 | 5 | yatay_img= cv.flip(img,1) #yatay öğrenme 6 | dky_img= cv.flip(img,0) #yatay öğrenme 7 | yzseksen_img=cv.flip(img,-1) # hem dikey hem yatay 8 | 9 | cv.imshow("yatay", yatay_img) 10 | cv.imshow("dikey", dky_img) 11 | cv.imshow("180", yzseksen_img) 12 | 13 | cv.waitKey(0) 14 | cv.destroyAllWindows() 15 | 16 | -------------------------------------------------------------------------------- /zoom_kodlar/u17_cizgi_metin.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | img=cv.imread(r'data/monalisa.jpg') 3 | 4 | cv.imshow('Orijinal', img) 5 | print(img.shape[:2]) 6 | cv.line(img,(0,0),(534,720),(0,0,255), thickness=3) 7 | cv.line(img,(534,0),(0,720),(0,0,255), thickness=3) 8 | cv.putText(img,'Fake Mona Lisa', (140,360), cv.FACE_RECOGNIZER_SF_FR_COSINE, 9 | 3, (255,0,0), 2) 10 | cv.imshow('Cizgi Metin', img) 11 | 12 | cv.waitKey(0) 13 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u18_geometrik_Sekiller.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy as np 3 | 4 | tuval=np.ones((600,600,3),np.uint8)*255 # 3 kanallı boş bir tual oluşturuyor rengi: beyaz 5 | #([255,255,255], [1,1,1]) 6 | cv.rectangle(tuval, (100, 100), (400, 400), (0, 0, 255), 5) 7 | cv.circle(tuval, (300, 300), 100, (0, 255, 0), 5) 8 | 9 | cv.imshow('Geometrk şekilller',tuval) 10 | cv.waitKey(0) 11 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u19_geometrik_oruntu.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | # Boş bir tuval oluştur 5 | tuval = np.ones((600, 600, 3), dtype="uint8") * 255 6 | 7 | def draw_triangle(canvas, center, size, color): 8 | points = np.array([ 9 | [center[0], center[1] - size], 10 | [center[0] - size, center[1] + size], 11 | [center[0] + size, center[1] + size]], np.int32) 12 | cv2.fillPoly(canvas, [points], color) 13 | 14 | # Tuval üzerine geometrik şekilleri çiz 15 | for i in range(0, 600, 40): # Sütunlar 16 | for j in range(0, 600, 40): # Satırlar 17 | # Kare çiz 18 | cv2.rectangle(tuval, (i, j), (i + 30, j + 30), (255 - j//5, 0, i//5), -1) 19 | 20 | # Üçgen çiz 21 | draw_triangle(tuval, (i + 20, j + 20), 15, (0, 255 - i//5, j//5)) 22 | 23 | # Daire çiz 24 | cv2.circle(tuval, (i + 10, j + 10), 10, (i//5, j//5, 255), -1) 25 | 26 | # Tuvali göster 27 | cv2.imshow("Soyut Geometrik Desen", tuval) 28 | cv2.waitKey(0) 29 | cv2.destroyAllWindows() 30 | -------------------------------------------------------------------------------- /zoom_kodlar/u1opencv_ver.py: -------------------------------------------------------------------------------- 1 | #versiyon kontrolü 2 | import cv2 as cv 3 | 4 | print ("Versiyon:",cv.__version__) -------------------------------------------------------------------------------- /zoom_kodlar/u20_fraktal.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | def draw_sierpinski_triangle(canvas, vertices, depth): 5 | if depth == 0: 6 | cv2.fillPoly(canvas, [np.array(vertices, dtype=np.int32)], (255, 0, 0)) 7 | else: 8 | # Üçgenin orta noktalarını bul 9 | pt1 = ((vertices[0][0] + vertices[1][0]) // 2, (vertices[0][1] + vertices[1][1]) // 2) 10 | pt2 = ((vertices[1][0] + vertices[2][0]) // 2, (vertices[1][1] + vertices[2][1]) // 2) 11 | pt3 = ((vertices[2][0] + vertices[0][0]) // 2, (vertices[2][1] + vertices[0][1]) // 2) 12 | 13 | # Her kenarın orta noktasını kullanarak yeni üçgenler oluştur 14 | draw_sierpinski_triangle(canvas, [vertices[0], pt1, pt3], depth - 1) 15 | draw_sierpinski_triangle(canvas, [pt1, vertices[1], pt2], depth - 1) 16 | draw_sierpinski_triangle(canvas, [pt3, pt2, vertices[2]], depth - 1) 17 | 18 | # Boş bir tuval oluştur 19 | tuval = np.ones((600, 600, 3), dtype="uint8") * 255 20 | 21 | # Başlangıç üçgeninin köşe noktalarını belirle 22 | points = [(300, 50), (50, 550), (550, 550)] 23 | 24 | # Sierpinski Üçgeni fraktalını çiz 25 | draw_sierpinski_triangle(tuval, points, 5) # Derinlik 5 26 | 27 | # Tuvali göster 28 | cv2.imshow("Sierpinski Triangle Fractal", tuval) 29 | cv2.waitKey(0) 30 | cv2.destroyAllWindows() 31 | -------------------------------------------------------------------------------- /zoom_kodlar/u21_ozellik_benzerlik_calismasi.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | # Görüntüleri yükle 5 | img1 = cv2.imread('data/kirmizi_togg.jpg', 0) # Gri tonlamalı olarak yükle 6 | img2 = cv2.imread('data/mavi_togg.jpg', 0) 7 | 8 | # ORB detektörünü başlat 9 | orb = cv2.ORB_create() 10 | 11 | # Anahtar noktaları ve tanımlayıcıları tespit et 12 | kp1, des1 = orb.detectAndCompute(img1, None) 13 | kp2, des2 = orb.detectAndCompute(img2, None) 14 | 15 | # BFMatcher nesnesi oluştur ve eşleşmeleri hesapla 16 | bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) 17 | matches = bf.match(des1, des2) 18 | 19 | # Eşleşmeleri mesafeye göre sırala 20 | matches = sorted(matches, key=lambda x: x.distance) 21 | 22 | # Eşleşmeleri çiz 23 | result = cv2.drawMatches(img1, kp1, img2, kp2, matches[:10], None, flags=2) 24 | 25 | # Sonucu göster 26 | cv2.imshow('Feature Matching', result) 27 | cv2.waitKey(0) 28 | cv2.destroyAllWindows() 29 | -------------------------------------------------------------------------------- /zoom_kodlar/u22_panorama.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | # Görüntüleri yükle 5 | img1 = cv2.imread('data/panorama1.jpg') 6 | img2 = cv2.imread('data/panorama2.jpg') 7 | 8 | # ORB detektörünü kullan 9 | orb = cv2.ORB_create() 10 | 11 | # Anahtar noktaları ve tanımlayıcıları bul 12 | kp1, des1 = orb.detectAndCompute(img1, None) 13 | kp2, des2 = orb.detectAndCompute(img2, None) 14 | 15 | # BFMatcher ile eşleşmeleri bul 16 | bf = cv2.BFMatcher() 17 | matches = bf.knnMatch(des1, des2, k=2) 18 | 19 | # İyi eşleşmeleri filtrele 20 | good = [] 21 | for m, n in matches: 22 | if m.distance < 0.75 * n.distance: 23 | good.append(m) 24 | 25 | # Homografi matrisini hesapla ve panoramayı oluştur 26 | if len(good) > 10: 27 | src_pts = np.float32([kp1[m.queryIdx].pt for m in good]).reshape(-1, 1, 2) 28 | dst_pts = np.float32([kp2[m.trainIdx].pt for m in good]).reshape(-1, 1, 2) 29 | M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0) 30 | 31 | # Eğer homografi matrisi başarılı bir şekilde hesaplandıysa 32 | if M is not None: 33 | # İlk görüntüyü dönüştür 34 | h1, w1, _ = img1.shape 35 | h2, w2, _ = img2.shape 36 | result = cv2.warpPerspective(img1, M, (w1 + w2, max(h1, h2))) 37 | 38 | # İkinci görüntüyü sonuca ekle 39 | result[0:h2, w1:w1+w2] = img2 40 | 41 | # Sonucu göster 42 | cv2.imshow('Panorama', result) 43 | cv2.waitKey(0) 44 | cv2.destroyAllWindows() 45 | else: 46 | print("Homografi matrisi hesaplanamadı.") 47 | else: 48 | print("Yeterli iyi eşleşme bulunamadı.") -------------------------------------------------------------------------------- /zoom_kodlar/u23_reg_of_in.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import numpy as np 3 | 4 | # Görüntüyü yükle 5 | image = cv2.imread('data/gol_manzarasi.jpeg') 6 | 7 | # ROI koordinatlarını belirle (x başlangıç, y başlangıç, genişlik, yükseklik) 8 | x, y, w, h = 100, 100, 200, 200 9 | 10 | # ROI'yi görüntüden kes 11 | roi = image[y:y+h, x:x+w] 12 | 13 | # ROI'yi göster 14 | cv2.imshow("ROI", roi) 15 | 16 | # ROI üzerinde bir işlem yap (örneğin, ROI'yi griye çevir) 17 | roi_gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY) 18 | 19 | # Gri ROI'yi orijinal görüntüye geri yerleştir (renkli olarak) 20 | image[y:y+h, x:x+w] = cv2.cvtColor(roi_gray, cv2.COLOR_GRAY2BGR) 21 | 22 | # Sonucu göster 23 | cv2.imshow("Gri Olarak Modife", image) 24 | 25 | # Maske oluştur 26 | mask = np.zeros(image.shape[:2], dtype="uint8") 27 | cv2.rectangle(mask, (x, y), (x+w, y+h), 255, -1) 28 | 29 | # Maskeyi orijinal görüntü ile birleştir 30 | masked_image = cv2.bitwise_and(image, image, mask=mask) 31 | 32 | # Sonucu göster 33 | cv2.imshow("Maskeli Goruntu", masked_image) 34 | 35 | 36 | cv2.waitKey(0) 37 | cv2.destroyAllWindows() 38 | 39 | -------------------------------------------------------------------------------- /zoom_kodlar/u2gorsel_islemleri.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | #imread fonksiyonu görseli okuyareak sayı dizisi şeklinde alır 3 | img=cv.imread('data/satranc3x3.jpg') 4 | print(img) 5 | 6 | #sayı dizisini tekrar görsel oalrak gösterelim 7 | cv.imshow('Stranc 3x3 @TechIst',img) 8 | #print(img[300:400, :]) belirli bir kısmı göster 9 | #bekle ve klavyeden bir tuşa basıldığında çık 10 | cv.waitKey(0) 11 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u3gorselhknbilgialma.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | #resmi oku 3 | img=cv.imread(r'data/yesil_elma.jpg') 4 | 5 | # görüntünün boyutlarını al (yüseklik ve genişlik) 6 | print(img.shape) 7 | #height,width,=img.shape[:2] 8 | channels=img.shape[2] 9 | print("Genişlik ve yükseklik:",img.shape[1],img.shape[0]) 10 | 11 | print (f'Görüntü yükseliği:{img.shape[0]}') 12 | print(f'Görüntü genişliği:{img.shape[1]}') 13 | print(f'Kanal sayısı:{img.shape[2]}') 14 | print(f'Veri tipi:{img.dtype}') 15 | 16 | #isteğe bağlı 17 | cv.imshow('Elma',img) 18 | cv.waitKey(0) 19 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u4farkli_okuma_modlari.py: -------------------------------------------------------------------------------- 1 | #Farklı okuma modları 2 | import cv2 as cv 3 | resim_dosyasi=r'data/satranc3x3.jpg' 4 | 5 | img_color=cv.imread(resim_dosyasi,1) 6 | #img_color=cv.imread(resim_dosyasi,cv.IMREAD_COLOR) 7 | 8 | 9 | #img_gray=cv.imread(resim_dosyasi,cv.IMREAD_GRAYSCALE) 10 | img_gray=cv.imread(resim_dosyasi,0) 11 | 12 | cv.imshow('Renkli',img_color) 13 | cv.imshow('Siyah Beyaz', img_gray) 14 | resim_dosyasi2=r'data/yesil_elma.jpg' 15 | img2=cv.imread(resim_dosyasi2,0) 16 | 17 | cv.imshow('Siyah Beyaz Elma',img2) 18 | 19 | img3=cv.imread('data/andrewNG.png',0) 20 | cv.imshow('Andrew Ng',img3) 21 | 22 | cv.waitKey(0) 23 | cv.destroyAllWindows() -------------------------------------------------------------------------------- /zoom_kodlar/u4v2_nostalji.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy as np 3 | import gradio as gr 4 | 5 | # Görseli siyah-beyaza dönüştüren fonksiyon 6 | def nostalji(image): 7 | image = np.array(image) 8 | gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY) 9 | return gray_image 10 | 11 | # Gradio arayüzü oluştur 12 | with gr.Blocks() as demo: 13 | gr.Markdown("# Görseli Siyah Beyaza Çevir!") 14 | gr.Markdown("Bir resim yükleyin ve siyah beyaza çevrilsin!") 15 | 16 | image_input = gr.Image(type='pil', label="Girdi Görseli") 17 | image_output = gr.Image(type="numpy", label="Sonuç Görseli") 18 | 19 | # Bileşenleri fonksiyonla bağla 20 | btn = gr.Button("Çevir") 21 | btn.click(fn=nostalji, inputs=image_input, outputs=image_output) 22 | 23 | # Gradio arayüzünü başlat 24 | if __name__ == "__main__": 25 | demo.launch(share=True) 26 | -------------------------------------------------------------------------------- /zoom_kodlar/u5kirmizielma.py: -------------------------------------------------------------------------------- 1 | #kırmızı rengi yeşile çevirme 2 | import cv2 as cv 3 | img_bgr=cv.imread(r'data/elma.jpg') 4 | 5 | #orijinali göster 6 | 7 | b,g,r=cv.split(img_bgr) 8 | 9 | 10 | #mavi renk 11 | img_mavi=cv.merge((r,g,b)) 12 | 13 | #kırmızı ve yeşil kanalları birleştir 14 | img_yesil=cv.merge((b,r,g)) 15 | 16 | #yeşil renkli elmayı göster 17 | cv.imshow('Kırmızı elma', img_bgr) 18 | cv.imshow('Mavi elma', img_mavi) 19 | cv.imshow('Yeşil Elma', img_yesil) 20 | 21 | cv.waitKey(0) 22 | cv.destroyAllWindows() 23 | 24 | -------------------------------------------------------------------------------- /zoom_kodlar/u6_renk_kanallari.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | #dosya oku 4 | img=cv.imread(r'data/kizil_sac3.jpg') 5 | #img_fer=cv.imread(r'data/kirmizi_ferrari.jpg') 6 | img_fer=cv.imread(r'data/kirmizi_togg.jpg') 7 | 8 | b,g,r=cv.split(img) 9 | bf,gf,rf=cv.split(img_fer) 10 | 11 | #mavi saç 12 | img_mavi=cv.merge((r,g,b)) 13 | 14 | #mavi ferrari 15 | mv_fer=cv.merge((rf,gf,bf)) 16 | 17 | #sari saç 18 | sari_sac=cv.merge((b,r,r)) 19 | 20 | 21 | #laci ferrari 22 | lc_fer=cv.merge((rf,gf,gf)) 23 | 24 | #Turkuaz 25 | tr_fer=cv.merge((rf,rf,bf)) 26 | 27 | #Turkuaz 28 | pembe_fer=cv.merge((rf,gf,rf)) 29 | 30 | #fotoyu göster 31 | #cv.imshow('Orijinal saç', img) 32 | #cv.imshow('Mavi sac', img_mavi) 33 | #cv.imshow('Sari sac',sari_sac) 34 | cv.imshow('Kirmizi ferrari',img_fer) 35 | cv.imshow('Mavi ferrari',mv_fer) 36 | cv.imshow('Laci ferrari',lc_fer) 37 | cv.imshow('Tr ferrari',tr_fer) 38 | cv.imshow('Pembe ferrari',pembe_fer) 39 | 40 | 41 | 42 | 43 | cv.waitKey(0) 44 | cv.destroyAllWindows() 45 | -------------------------------------------------------------------------------- /zoom_kodlar/u7_dosya_uzantisi.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | 4 | img=cv.imread(r'data/satranc3x3.jpg') 5 | 6 | b,g,r=cv.split(img) 7 | 8 | mavi_img=cv.merge((r,g,b)) 9 | 10 | cv.imshow('Mavi dama',mavi_img) 11 | cv.imwrite(r'data/mavi_dama.jpg', mavi_img) 12 | #Tek kanal olarak göster 13 | cv.imshow('Satranc 3x3',img) 14 | cv.imshow('Blue Kanalı',b) 15 | cv.imshow('Green kanalı',g) 16 | cv.imshow('REd Kanalı',r) 17 | 18 | 19 | cv.waitKey(0) 20 | cv.destroyAllWindows() 21 | 22 | -------------------------------------------------------------------------------- /zoom_kodlar/u8_video_renkkanal.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy as np 3 | 4 | #Giriş ve çıkış video 5 | input_video=r'data/araba_video.mp4' 6 | output_video=r'data/araba_output.mp4' 7 | 8 | #video yakalama 9 | cap=cv.VideoCapture(input_video) 10 | 11 | #video özelliklerine bak 12 | fourcc=cv.VideoWriter_fourcc(*'mp4v') #Kodek 13 | fps=int(cap.get(cv.CAP_PROP_FPS)) #saniyedeki frame sayısı 14 | width=int(cap.get(cv.CAP_PROP_FRAME_WIDTH)) #genislik 15 | height=int(cap.get(cv.CAP_PROP_FRAME_HEIGHT)) #yükseklik 16 | #kodek=cap.get(cv.CAP_PROP_FOURCC) 17 | 18 | out=cv.VideoWriter(output_video,fourcc,fps,(width,height)) #videoyumuzu belirtilen özellikelrde oluşturur 19 | 20 | while cap.isOpened(): 21 | ret,frame=cap.read() 22 | 23 | if not ret: #okuma başarılı ise 24 | break 25 | 26 | #renk kanallarını ayarla 27 | b,g,r=cv.split(frame) 28 | 29 | rgb_frame=cv.merge((b,r,r)) 30 | cv.imshow('Mavi video',rgb_frame) 31 | 32 | out.write(rgb_frame) #videoya yaz 33 | if cv.waitKey(1) & 0xFF == ord('q'): #q tusuna basıldıgında 34 | break 35 | cap.release() 36 | out.release() 37 | cv.destroyAllWindows() 38 | 39 | -------------------------------------------------------------------------------- /zoom_kodlar/u9_web_cam.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | 3 | #kameradan görüntü al 4 | 5 | cap=cv.VideoCapture(0) #0 varsayılan kamera 6 | 7 | while True: 8 | ret,frame=cap.read() 9 | cv.imshow('kamera',frame) 10 | if cv.waitKey(1) & 0xFF==ord('q'): 11 | break --------------------------------------------------------------------------------