好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > OpenCV如何去除圖片中的陰影的實現

OpenCV如何去除圖片中的陰影的實現

熱門標簽:在哪里辦理400電話號碼 原裝電話機器人 江蘇客服外呼系統廠家 清遠360地圖標注方法 400電話申請服務商選什么 千陽自動外呼系統 西藏智能外呼系統五星服務 工廠智能電話機器人 平頂山外呼系統免費

一、前言

如果你自己打印過東西,應該有過這種經歷。如果用自己拍的圖片,在手機上看感覺還是清晰可見,但是一打印出來就是漆黑一片。比如下面這兩張圖片:

因為左邊的圖片有大片陰影,所有打印出來的圖片不堪入目(因為打印要3毛錢,所以第二張圖片只是我用程序模擬的效果)。

那有什么辦法可以解決嗎?答案是肯定的,今天我們就來探討幾個去除陰影的方法。

二、如何去除陰影?

首先為了方便處理,我們通常會對圖片進行灰度轉換(即將圖片轉換成只有一個圖層的灰色圖像)。

然后我們分析一下,在上面的圖片中有三個主色調,分別是字體顏色(黑色)、紙張顏色(偏白)、陰影顏色(灰色)。知道這點后我們就好辦了。我們只需要把灰色和白色部分都處理為白色就好了。

那要我怎么才知道白色和灰色區域呢?對于一個8位的灰度圖,黑色部分的像素大致在0-30左右。白色和灰色應該在31-255左右(這個范圍只是大致估計,實際情況需要看圖片)。如圖:

左邊是原圖,右邊是處理后的圖片。我們將灰色和接近白色的部分都處理成了白色。

那下面我們就開始處理吧。

三、numpy的ndarray數組

可能有些讀者沒有接觸過numpy,這里簡單說一下。

numpy是一個第三方的模塊,用它我們可以很方便的處理多維數組(ndarray數組)。而圖片在OpenCV中的存儲方式正好是ndarray,所以我們對數組的操作就是對圖片的操作。

在使用之前我們需要安裝一下OpenCV模塊:

pip install opencv-python

在安裝OpenCV時會自動安裝numpy。

下面我們主要是看看布爾索引的操作,先看下面代碼:

import numpy as np
# 創建一個元素為1, 0, 1, 1的ndarray數組
arr = np.array([1, 0, 1, 1])
# 判斷數組中有沒有0
res = arr == 0
# 將數組中為0的元素賦值為10
arr[res] = 10

如果沒有接觸過numpy會不太理解上面的語法。我們來詳細說一下:

創建ndarray數組:我們通過np.array可以將現有的列表裝換成一個ndarray對象,這個很好理解

判斷數組中有沒有0:我們可以直接用ndarray對象來判斷,比如:arr == 0,他會返回一個元素結構和數量一樣的ndarray對象。但是返回的對象原始類型式bool,我們來看看res的輸出:

[False True False False]

從結果可以看出,我們比較arr==0就是對數組中每個元素進行比較,并返回比較的布爾值。

將數組中為0的元素賦值為10:而最難理解的arr[res]操作。它其實就是拿到res中為True的視圖,比如上面的結果是第二個為True則只會返回第二個元素的視圖。我們執行下面的代碼:

arr[res] = 10

就是把對應res為True的部分賦值為10,也就是將arr中值為0的部分賦值為10。

下面是arr最后的結果:

[ 1 10 1 1]

可以看到原本的0處理為了1。

四、去除陰影

現在我們知道了布爾索引,我們可以對圖片進行處理了。我們只需要讀取圖片,然后將像素值大于30的部分處理為白色就好了。下面是我們的代碼:

import cv2
# 讀取圖片
img = cv2.imread('page.jpg', 0)
# 將像素值大于30的部分修改為255(白色)
img[img > 30] = 255
# 保存修改后的圖片
cv2.imwrite('res.jpg', img)

上面的代碼非常簡單,我們使用cv2.imread函數讀取圖片,第一個參數是圖片路徑,第二個參數表示讀取為灰度圖。我們來看看效果圖:

可以看到陰影部分被很好地去除了。有些字比較模糊,我們可以通過調節灰白色地范圍調整。比如:

img[img > 40] = 255

具體的值就要根據要處理的圖片來決定了。

五、改進

對于上面地處理,還可以做一個小小地改進。我們可以讓紙張顏色不那么白,我們來看改進后的代碼:

import cv2
import numpy as np
img = cv2.imread('page.jpg', 0)
# 計算灰白色部分像素的均值
pixel = int(np.mean(img[img > 140]))
# 把灰白色部分修改為與背景接近的顏色
img[img > 30] = pixel
cv2.imwrite('res.jpg', img)

在上面的代碼中我們不再是將灰白色部分設置為255,而是事先計算了一個數值。

pixel = int(np.mean(img[img > 140]))

猜測陰影部分的顏色值小于140,因此先索引出圖像中大于140的部分。然后求平均值,這樣我們算出來的大致就是原圖的背景顏色,然后將圖片不是文字的部分處理為背景顏色,就是最終結果了。下面是我們的效果圖:

可以看到這次效果要更好了。但是因為背景都是一個顏色,所以看起來還是會有一些差別。

不過有一點需要說一下,上面的操作只適用于比較簡單的圖片,比如試卷這種。

到此這篇關于OpenCV如何去除圖片中的陰影的實現的文章就介紹到這了,更多相關OpenCV 去除圖片陰影內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python 基于opencv去除圖片陰影

標簽:錦州 日照 白城 天水 西安 股票 安慶 隨州

巨人網絡通訊聲明:本文標題《OpenCV如何去除圖片中的陰影的實現》,本文關鍵詞  OpenCV,如何,去除,圖片,中的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《OpenCV如何去除圖片中的陰影的實現》相關的同類信息!
  • 本頁收集關于OpenCV如何去除圖片中的陰影的實現的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 一区二区美女视频| 被窝电影亚洲午夜久久| 韩国免费一级a一片在线播放| 欧美三级电影中文字幕| 韩日一区二区| 午夜免费观看体检区入口试看| 亚洲精品秘?一区二三区| 精品久久成人免费第三区| 摸着她的下面流了黏黏的液体网站| 日本一品道门免费高清视频| 免费无遮挡看黄H漫画同人图| 美女动图大黄| 国产一区精品视频| 快穿之绝美白莲在线教学| 日韩精品视频在线观看播放| ova《夫人回复术》| 高颜值美女啪啪| 呦交性呦交乱叫| 国产mv欧美mv日产mv免费| 白丝玉足视频| 女人被男人狂躁的视频| 女人的秘密| 内地精品露脸自拍视频香蕉| 欲妄的最新章节| 扒开老女毛荫荫的黑森林视频| 久久99这里精品8国产| 国产精品久久杨幂| 成人免费的性色视频| 娇妻高潮浓精白浆XXⅩ| 小秘书夹的真紧好骚好爽| 一级a毛片免费观看久久精品| 男人被男人的视频| 联盟在ig我说了算| 9i福利AV视频在线观看| 草草久| 国产下药迷倒白嫩美女96| 明星综艺污h版| 啪啪顶到最里面是不是会流血 | 修仙(高h)| 日本资源在线观看| 顶级肉欲(出轨高H)|