發表文章

目前顯示的是 3月, 2020的文章

26. Remove Duplicates from Sorted Array for python

圖片
class Solution: def removeDuplicates(self, nums: List[int]) -> int: count=0 if len(nums)==0: return 0 for i in range(len(nums)): if nums[count]!=nums[i]: count+=1 nums[count]=nums[i] return count+1

Without Function數位影像處理(細線化)程式碼python

圖片
import numpy as np import cv2 img = np.zeros((100,400),dtype='uint8') font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'TheAILearner',(5,70), font, 2,(255),5,cv2.LINE_AA) img1 = img.copy() x=img.shape[0] y=img.shape[1] thin = np.zeros(img.shape,dtype='uint8') def e(img2): b=np.uint8(np.zeros((x,y))) for i in range(1,x-1): for j in range(1,y-1): if (img2[i-1][j-1]==255 and img2[i-1][j+1]==255 and img2[i+1][j-1]==255 and img2[i+1][j+1]==255): b[i][j]=255#侵蝕 return b def o(img2): c=np.uint8(np.zeros((x,y))) for i in range(1,x-1): for j in range(1,y-1): if (img2[i-1][j-1]==255 and img2[i-1][j+1]==255 and img2[i+1][j-1]==255 and img2[i+1][j+1]==255): c[i][j]=255#侵蝕 d=c.copy() for i in range(1,x-1): for j in range(1,y-1): if (c[i][j]==255): d[i][j]=255 d[i-1][j-1]=255 d[i+1][j-1]=255

Without Function數位影像處理(細線化)程式碼python數位影像處理(侵蝕,膨脹,斷開,閉合)程式碼python

圖片
import numpy as np import cv2 img=cv2.imread("9.png",0) cv2.imshow("ori",img) x=img.shape[0] y=img.shape[1] b=np.uint8(np.zeros((x,y))) for i in range(1,x-1): for j in range(1,y-1): if (img[i-1][j-1]==255 and img[i-1][j+1]==255 and img[i+1][j-1]==255 and img[i+1][j+1]==255): b[i][j]=255 cv2.imshow("Eroded",b) #侵蝕 img=cv2.imread("9.png",0) c=np.uint8(np.zeros((x,y))) for i in range(1,x-1): for j in range(1,y-1): if (img[i][j]==255): c[i][j]=255 c[i-1][j-1]=255 c[i+1][j-1]=255 c[i-1][j+1]=255 c[i+1][j+1]=255 cv2.imshow("Dilated",c)#膨脹 d=np.uint8(np.zeros((x,y))) for i in range(1,x-1): for j in range(1,y-1): if (b[i][j]==255): d[i][j]=255 d[i-1][j-1]=255 d[i+1][j-1]=255 d[i-1][j+1]=255 d[i+1][j+1]=255 cv2.imshow("open",d) #先侵蝕再膨脹-斷開 f=n

使用vgg16遷移學習達成訓練目標-2013kaggle

圖片
在深度學習的路上,手寫辨識被稱作深度學習的hello world,那2013年貓狗分類的比賽,也是很多人會遇到的題目,那如何獲得高準確率並且不用很多張圖片呢? 這時候遷移學習(Transfer Learning)就上場了,什麼是遷移學習呢?簡單來說就是拿別人訓練好的模型,把輸出加以修改,來達成你要學習的東西,因此如果你的訓練樣本很少,遷移學習或許是個好選擇。 vgg被用來訓練辨識ImageNet的1000種目標,那我們這次要辨識的目標是貓跟狗,貓跟狗也有在ImageNet的1000種目標裡面,所以很適合用遷移學習來完成。 這次的訓練集為:貓500張,狗500張,這麼少的資料就可以達到90%的準確率 程式碼如下: from keras import models from keras import layers from keras.applications import VGG16 from keras.preprocessing.image import ImageDataGenerator from keras import optimizers import matplotlib.pyplot as plt train_dir = './data/train/' test_dir = './data/validation/' conv_base=VGG16(weights='imagenet',include_top=False,input_shape=(150,150,3)) #載入VGG16 model = models.Sequential() model.add(conv_base) model.add(layers.Flatten()) model.add(layers.Dense(output_dim = 256, activation = 'relu')) model.add(layers.Dense(output_dim = 1, activation = 'sigmoid')) #Dense輸出有幾個output_dim就要改成那個數字,不過輸出只要不是1,activation(激活函數)就必須修改成softmax conv

Without Function數位影像處理(細線化)程式碼python數位影像處理(二值化,低通,高通,中值濾波器)程式碼python

圖片
值方圖等化 import cv2 img=cv2.imread("8.png",0) cv2.imshow("IMG",img) dst=cv2.equalizeHist(img) cv2.imshow("DST",dst) cv2.waitKey(0) cv2.destroyAllWindows()  影像二值化 import cv2 a=cv2.imread("8.png",0) cv2.imshow("IMG",a) x=a.shape[0] y=a.shape[1] threshold=125 for i in range(x): for j in range(y): if(a[i][j]>threshold): a[i][j]=0 else: a[i][j]=255 cv2.imshow("threshold",a) cv2.waitKey(0) cv2.destroyAllWindows() 調整影像強度 import cv2 a=cv2.imread("8.png",0) cv2.imshow("IMG",a) x=a.shape[0] y=a.shape[1] for i in range(x): for j in range(y): a[i][j]=a[i][j]*0.7 cv2.imshow("dark",a) b=cv2.imread("8.png",0) for i in range(x): for j in range(y): b[i][j]=b[i][j]*1.5 if(int(b[i][j])>=int(255)): b[i][j]=int(255) cv2.imshow("bright",b) cv2.waitKey(0) cv2.destroyAllWindows()

以python讀取yolo的輸出-darknet.py

在安裝完yolo後,也實際操作yolo後,就會想要把yolo辨識完的座標,再加以應用,照理說要取找到yolo資料夾的c語言(yolo是用c寫的)檔案,做完更改後,還要在yolo的根目錄(~darknet)裡,把yolo編譯一次,才算完成修改。 不過在yolo資料夾裡,藏著一個python的資料夾,裡面有個darknet.py,這個檔案可以把yolo辨識完的結果,使用python 輸出。 一開始打開這個文件,不是直接執行就可以啟動的,還要做些修改。 https://blog.csdn.net/weixin_39198406/article/details/83931727 詳情請看這個文件 主要就是yolo辨識完會傳一個r陣列,裡面有辨識的名稱,座標( 注意不是邊界座標,是中心點以及方格的高跟寬 ) 之後就能應用darknet.py來實現你的作品了 那如何用這個darknet.py實現影片的目標檢測呢,有辦法只是需要更改程式碼,之後再說 程式碼如下: 應該在darknet.py複製貼上就可以了 from ctypes import * import math import random import os import cv2 import numpy as np import random def sample(probs): s = sum(probs) probs = [a/s for a in probs] r = random.uniform(0, 1) for i in range(len(probs)): r = r - probs[i] if r <= 0: return i return len(probs)-1 def c_array(ctype, values): arr = (ctype*len(values))() arr[:] = values return arr class BOX(Structure): _fields_ = [("x", c_float), ("y", c_float),