python opencv實現目標區域裁剪功能

2022-09-25 07:36:11 字數 1832 閱讀 9235

這個任務是自己在專案中資料處理的一部分內容,待處理的如下所示:

我需要將目標區域給裁剪出來,要不然在後期訓練網路的時候整幅影象過大,且目標區域過小,得到結果不好,還會加劇計算量。在網上找了各個大佬的部落格看,沒找到合適的,便自己動手寫了,順便自己的小破站剛搭建起來,記錄一下自己的思路。

思路去尋找目標區域的最左邊,最右邊,最上面和最下面的畫素點,取到座標資訊以後用cv2的裁剪一下就可以實現了。

#難點資料總共是11952張,每張是1024*768大小的,依次去遍歷的話擔心太費時間了,結果還好,影象中黑色的畫素點值為0,計算量比想象的要小很多

#**import cv2

""" 使用opencv擷取

"""def search(path):

left = 1024

right = 0

upper = 768

lower = 0

img = cv2.imread(path)[:,:,0]

# print(img.shape)

for i in range(768):

for j in range(1024):

if img[i,j] != 0 :

# print(img[i,j])

left = min(j,left)

right = max(j,right)

lower = max(i,lower)

upper = min(i,upper)

return (left,upper,right,lower)

def image_cut_s**e(path, left, upper, right, lower, s**e_path):

"""所截區域儲存

:param path: 路徑

:param left: 區塊左上角位置的畫素點離左邊界的距離

:param upper:區塊左上角位置的畫素點離上邊界的距離

:param right:區塊右下角位置的畫素點離左邊界的距離

:param lower:區塊右下角位www.cppcns.com置的畫素點離上邊界的距離

故需滿足:lower > upper、right > left

:param s**e_path: 所截儲存位置

"""img = cv2.imread(path) # 開啟影象

cropped = img[upper:lower, left:right]

# 儲存擷取的

cv2.imwrite(s**e_path, cropped)

if __name__ == '__main__':

root_path = r'原的路徑'

s**www.cppcns.come_path = r'裁剪後的儲存的路徑'

images = os.listdir(root_path)

for image in images:

# print(image)

pic_path = os.path.join(root_path,image)

# print(pic_path)

pic_s**e_dir_path = os.path.join(s**e_path,image)

print(pic程式設計客棧_s**e_dir_p程式設計客棧ath)

left, upper, right, lower = search(pic_path)

# show_cut(pic_path, left, upper, right, lower)

image_cut_s**e(pic_path, left, upper, rig程式設計客棧ht, lower, pic_s**e_dir_path)

結果裁剪後的影象如下

python opencv 實現人臉檢測

可以用opencv 的庫函式來實現人臉檢測 coding utf 8 import numpy as np import cv2 import time import sys,getopt from video import create capture from common import clo...

python opencv實現掩膜

import ssl import urllib.request import cv2 import numpy as np 獲得def getpic name,url name 位址 url 名字 自定義 解決ssl驗證 請求 resp urllib.request.urlopen url ima...

python opencv實現抖動演算法

簡單說就是犧牲解析度來提高顏色數量。通過黑點的疏密程度來進行灰度的顯示。例如墨水螢幕只能顯示黑白,那麼我們可以取樣一部分區域矩,例如2x2的乙個矩陣,來顯示5個級別的灰度,用4個畫素當成乙個畫素來看,就會有5個級別的灰度。通過這種方法就可以犧牲掉一半的解析度 其實是1 4 來顯示出5個級別的灰度,當...