最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

opencv python截取圓形區(qū)域的實(shí)現(xiàn)

 更新時(shí)間:2022年08月14日 15:36:14   作者:粒子白  
本文主要介紹了opencv python截取圓形區(qū)域的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、先進(jìn)行剪切操作

圓形區(qū)域占圖片可能不多,多余的部分不要。
看下圖。

只要紐扣電池內(nèi)部和少許的邊緣部分,其余黑色背景部分不需要。
先沿著紐扣電池的邊緣剪切出來感興趣的區(qū)域。
有2個(gè)方法,用尋找輪廓外接圓的方法,或者基爾霍夫圓的方法。
在這里以輪廓外接圓方法為例。
代碼如下:

import cv2
import numpy as np

image = cv2.imread('F:\Siamese-pytorch-master\datasets\images_background\quebian_Hander/20220724-112303-336.jpg')
image=cv2.resize(image,(800,600))#縮放一下
img=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 灰度圖
# 二值化  這個(gè)位置要注意二值化和反二值化,看你原圖是什么樣子的底色
# ret , thresh = cv2.threshold(img, 230, 255, cv2.THRESH_BINARY_INV)
# ret , thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)
ret , thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
dot=[]  # 用來保存所有輪廓返回的坐標(biāo)點(diǎn)。
for c in contours:
    # 找到邊界坐標(biāo)
    min_list=[] # 保存單個(gè)輪廓的信息,x,y,w,h,area。 x,y 為起始點(diǎn)坐標(biāo)
    x, y, w, h = cv2.boundingRect(c)  # 計(jì)算點(diǎn)集最外面的矩形邊界
    min_list.append(x)
    min_list.append(y)
    min_list.append(w)
    min_list.append(h)
    min_list.append(w*h) # 把輪廓面積也添加到 dot 中
    dot.append(min_list)

# 找出最大矩形的 x,y,w,h,area
max_area=dot[0][4] # 把第一個(gè)矩形面積當(dāng)作最大矩形面積
for inlist in dot:
    area=inlist[4]
    if area >= max_area:
        x=inlist[0]
        y=inlist[1]
        w=inlist[2]
        h=inlist[3]
        max_area=area
# 在原圖上畫出最大的矩形  這部分實(shí)際上是對邊緣再擴(kuò)展一下,避免剪切的圓不夠完整
print(x,y,w,h)
if y>=60:
    new_w=60
elif y>=50:
    new_w=50
elif y>=40:
    new_w=40
elif y>=30:
    new_w=30
elif y>=20:
    new_w=20
elif y>=10:
    new_w=10

x0=x-int(new_w/2)
y0=y-int(new_w/2)
w=w+new_w
h=h+new_w
print(x0,y0,w,h)
# cv2.rectangle(image, (x0, y0), (x + w, y + h), (0, 255, 0), 1)

crop = image[y0:y0+h, x0:x0+w]
cv2.imshow('crop',crop)
cv2.imwrite("crop.jpg",crop)
cv2.waitKey(0)
cv2.destroyWindow()

代碼執(zhí)行以后可以看下剪切效果。大致如下。

以上代碼是單張圖片。
執(zhí)行一下代碼可以批量處理圖片。
注意:如果你的代碼報(bào)錯(cuò),注意下二值化的這行代碼,是THRESH_BINARY_INV還是THRESH_BINARY。

# -*- coding:utf-8 -*-
# from re import X
import cv2
import numpy as np

from glob import glob
import os

img_path = glob("F:\Siamese-pytorch-master\datasets\images_background\character01/*.jpg")
path_save = "F:\Siamese-pytorch-master\datasets\images_background\quebian_Hander/"


for i,file in enumerate(img_path):
    name = os.path.join(path_save, "%d.jpg"%i)
    image = cv2.imread(file)
    print(file,i)
    image=cv2.resize(image,(800,600))
    img=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    img = cv2.bilateralFilter(img,9,75,75)
    ret , thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    
    dot=[]  # 用來保存所有輪廓返回的坐標(biāo)點(diǎn)。
    for c in contours:
        # 找到邊界坐標(biāo)
        min_list=[] # 保存單個(gè)輪廓的信息,x,y,w,h,area。 x,y 為起始點(diǎn)坐標(biāo)
        x, y, w, h = cv2.boundingRect(c)  # 計(jì)算點(diǎn)集最外面的矩形邊界
        min_list.append(x)
        min_list.append(y)
        min_list.append(w)
        min_list.append(h)
        min_list.append(w*h) # 把輪廓面積也添加到 dot 中
        dot.append(min_list)

# 找出最大矩形的 x,y,w,h,area
    max_area=dot[0][4] # 把第一個(gè)矩形面積當(dāng)作最大矩形面積
    for inlist in dot:
        area=inlist[4]
        if area >= max_area:
            x=inlist[0]
            y=inlist[1]
            w=inlist[2]
            h=inlist[3]
            max_area=area
# 在原圖上畫出最大的矩形
    print(x,y,w,h)
    if y>=60:
        new_w=60
    elif y>=50:
        new_w=50
    elif y>=40:
        new_w=40
    elif y>=30:
        new_w=30
    elif y>=20:
        new_w=20
    elif y>=10:
        new_w=10
    elif y>=5:
        new_w=5
    else:
        new_w=0

    x0=x-int(new_w/2)
    y0=y-int(new_w/2)
    w=w+new_w
    h=h+new_w
    print(x0,y0,w,h)
    # cv2.rectangle(image, (x0, y0), (x0 + w , y0 + h), (0, 255, 0), 1)
    crop = image[y0:y0+h, x0:x0+w]
    cv2.imwrite(name,crop)


批量以后效果類似下圖?;旧喜脺p掉了不需要的部分。

二、去除背景

執(zhí)行以下代碼。

import cv2
import numpy as np
from glob import glob
import os
 

img_path = glob("F:\DEMO_CODE\demo\ML\qieyuan/*.jpg")
path_save = "F:\DEMO_CODE\demo\ML\qieyuan/"

for i,file in enumerate(img_path):
    name = os.path.join(path_save, "%d.jpg"%i)
    image = cv2.imread(file)
    gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(gray,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    contours, _ = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    for cont in contours:
        (x, y), radius = cv2.minEnclosingCircle(cont)
        if radius>200:
            ming=cv2.circle(image,(int(x),int(y)),int(radius), (0, 0, 255), 2)
            print("radius is ")
            print(radius)
            print((x, y))   
            roi = np.zeros(image.shape[:2], np.uint8)
            roi = cv2.circle(roi,(int(x),int(y)), int(radius), 255, cv2.FILLED)
            mask = np.ones_like(image) * 255
            mask = cv2.bitwise_and(mask, image, mask=roi) + cv2.bitwise_and(mask, mask, mask=~roi)
            cv2.imwrite(name,mask)
            print(i,name)

效果如下:

不要的部分就變成白色了

總結(jié)

卷積神經(jīng)網(wǎng)絡(luò)的不一定需要圖片預(yù)處理,有時(shí)候預(yù)處理反而得到不好的結(jié)果。但是也可以嘗試一下,也許結(jié)果更好。

到此這篇關(guān)于opencv python截取圓形區(qū)域的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)opencv 截取圓形區(qū)域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python安裝jieba庫詳細(xì)教程

    Python安裝jieba庫詳細(xì)教程

    jieba庫是一款優(yōu)秀的 Python 第三方中文分詞庫,jieba 支持三種分詞模式:精確模式、全模式和搜索引擎模式,這篇文章主要介紹了Python安裝jieba庫教程,需要的朋友可以參考下
    2023-03-03
  • Python 處理帶有 \u 的字符串操作

    Python 處理帶有 \u 的字符串操作

    這篇文章主要介紹了Python 處理帶有 \u 的字符串操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 深入解析Python編程中JSON模塊的使用

    深入解析Python編程中JSON模塊的使用

    這篇文章主要介紹了深入解析Python編程中JSON模塊的使用,舉例講解了如何使用Python解析JSON數(shù)據(jù),需要的朋友可以參考下
    2015-10-10
  • PyTorch CNN實(shí)戰(zhàn)之MNIST手寫數(shù)字識(shí)別示例

    PyTorch CNN實(shí)戰(zhàn)之MNIST手寫數(shù)字識(shí)別示例

    本篇文章主要介紹了PyTorch CNN實(shí)戰(zhàn)之MNIST手寫數(shù)字識(shí)別示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • python必學(xué)知識(shí)之裝飾器詳解

    python必學(xué)知識(shí)之裝飾器詳解

    這篇文章主要介紹了python必學(xué)知識(shí)之裝飾器詳解,python的三大器指的是:裝飾器、迭代器、生成器,下面就裝飾器整理一下從各種資源收獲的對裝飾器的理解,需要的朋友可以參考下
    2023-09-09
  • 基于Python實(shí)現(xiàn)繪制一個(gè)足球

    基于Python實(shí)現(xiàn)繪制一個(gè)足球

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)繪制一個(gè)簡單的足球,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以嘗試一下
    2023-02-02
  • pycharm進(jìn)行Git關(guān)聯(lián)和取消方式

    pycharm進(jìn)行Git關(guān)聯(lián)和取消方式

    這篇文章主要介紹了pycharm進(jìn)行Git關(guān)聯(lián)和取消方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python如何將PDF拆分成多個(gè)文件(最新推薦)

    Python如何將PDF拆分成多個(gè)文件(最新推薦)

    在 Python 中,你可以使用 PyPDF2 庫來拆分 PDF 文件,以下是一個(gè)簡單的示例,演示如何將一個(gè) PDF 文件拆分為多個(gè)單頁 PDF 文件,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 關(guān)于Matplotlib繪制動(dòng)態(tài)實(shí)時(shí)曲線的方法改進(jìn)指南

    關(guān)于Matplotlib繪制動(dòng)態(tài)實(shí)時(shí)曲線的方法改進(jìn)指南

    這篇文章主要給大家介紹了關(guān)于Matplotlib繪制動(dòng)態(tài)實(shí)時(shí)曲線的相關(guān)資料,matplotlib是python里最popular的畫圖工具,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-06-06
  • Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf

    Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量將word文檔轉(zhuǎn)換成pdf文件,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08

最新評論

许昌县| 额济纳旗| 故城县| 石景山区| 长宁县| 双牌县| 桃源县| 临湘市| 高邮市| 红河县| 顺义区| 银川市| 运城市| 绥滨县| 长泰县| 揭东县| 务川| 台中县| 肥西县| 永春县| 兴安县| 久治县| 浪卡子县| 麟游县| 社会| 台南市| 绥江县| 九台市| 古交市| 呈贡县| 石城县| 平陆县| 长寿区| 武城县| 英吉沙县| 当涂县| 大城县| 五指山市| 什邡市| 香河县| 大埔县|