osmangnc
Üye
- Katılım
- 10 Şub 2019
- Mesajlar
- 14
- Puanları
- 1
- Yaş
- 30
Merhaba,
kameradan canlı görüntü alıp görüntü alanına kare bir cisim girdiği anda bunun fotografını çekip kayıt edecek bir program yazıyorum fakat hata alıyorum . yardım edebilir misiniz?
aşağıda yazdığım örnek kod var. kod da :
kamera sürekli tarama yapıyor eğer kare algılar ise 1 tuşuna basın diyor ve 3 adet fotograf keydediyor. sonra tekrar tarama yapıyor eğer kare algılar ise 2 tuşuna basmamızı isteyip algıladığı kareleri 2. klasöre kayıt ediyor.
kameradan canlı görüntü alıp görüntü alanına kare bir cisim girdiği anda bunun fotografını çekip kayıt edecek bir program yazıyorum fakat hata alıyorum . yardım edebilir misiniz?
aşağıda yazdığım örnek kod var. kod da :
kamera sürekli tarama yapıyor eğer kare algılar ise 1 tuşuna basın diyor ve 3 adet fotograf keydediyor. sonra tekrar tarama yapıyor eğer kare algılar ise 2 tuşuna basmamızı isteyip algıladığı kareleri 2. klasöre kayıt ediyor.
Kod:
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 24 13:43:19 2020
[USER=227105]@author[/USER]: Osman Genç
"""
import cv2
import numpy as np
import os
mermerSayi=0
def kaydet():
for mermerSayi in range(3):
cv2.imwrite(f"foto"+str({mermerSayi})+".jpg",image)
print("fotograf kaydedildi")
print("k degeri,",mermerSayi)
mermerSayi=mermerSayi+1
#kamera=cv2.VideoCapture(0)
while 1:
mermerSayi=0
# ret,goruntu=kamera.read()
goruntu=cv2.imread("c.png")
width = int(300)
height = int(658)
dim = (width, height)
#resize image
goruntu = cv2.resize(goruntu, dim, interpolation=cv2.INTER_AREA)
height, width, channel = goruntu.shape
step = channel * width
image=goruntu
gray1 = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray1 = cv2.bilateralFilter(gray1, 11, 118, 119)
edged = cv2.Canny(gray1, 30, 200)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))
closed = cv2.morphologyEx(edged, cv2.MORPH_CLOSE, kernel)
(cnts, _) = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
print("Program Basliyor ....-")
key=input(print("1. Sinif Mermerleri Koyun ve 1 tusuna basin"))
key=int(key)
for c in cnts:
# approximate the contour
area = cv2.contourArea(c)
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.015 * peri, True)
print('kose bekleniyor...')
appsayi=len(approx)
print("bulunan kose sayisi",appsayi)
if appsayi!=4:
pass
if len(approx) == 4 :
screenCnt = approx
print('Mermer Tespit Edildi')
print('alan', area)
area1=area*0.04285714
cv2.drawContours(image, [screenCnt], -1, (0, 255, 0), 3)
cv2.imshow("1",image)
cv2.waitKey(5)
key=input(print("1. Sinif Mermerleri Koyun ve 1 tusuna basin"))
key=int(key)
if key==1 & mermerSayi<=3:
os.chdir("C:\\Users\\90535\\Desktop\\PRojeprogramları\\Mermer_Fotograflari\\Bir")
kaydet()
cv2.imshow("image",image)
cv2.waitKey(5)
print("birinci sinif mermer sayisi,", mermerSayi)
print("1. sinif mermerlerden 3 adet cekildi")
key=input(print("2. Sinif Mermerleri Koyun ve 2 tusuna basin"))
key=int(key)
os.chdir("C:\\Users\\90535\\Desktop\\PRojeprogramları")
if key==2 & mermerSayi<=3:
os.chdir("C:\\Users\\90535\\Desktop\\PRojeprogramları\\Mermer_Fotograflari\\Iki")
mermersayi=0
kaydet()
print("2. sinif mermer sayisi,", mermerSayi)
print("2. sinif mermerlerden 3 adet cekildi")
key=input(print("3. Sinif Mermerleri Koyun ve 3 tusuna basin"))
key=int(key)
os.chdir("C:\\Users\\90535\\Desktop\\PRojeprogramları")
if key==3 & mermerSayi<=3:
os.chdir("C:\\Users\\90535\\Desktop\\PRojeprogramları\\Mermer_Fotograflari\\Uc")
mermersayi=0
kaydet()
cv2.imshow("fo",image)
if cv2.waitKey(25) & 0xFF==ord("w") :
break
#if area1 > 5:
# print(area1)
# cv2.imwrite("amet.jpg",image)
print("Resim Cekme tamlandı.")
break
#if cv2.waitKey(25) & 0xFF==ord("q") :
#break
#kamera.release()
cv2.destroyAllWindows()
Moderatör tarafında düzenlendi: