OpenCV基礎 | 5.像素運算

2022-01-24 快學Python

學習視頻可參見python+opencv3.3視頻教學 基礎入門[1]

今天寫的是圖像像素運算

outline

1.算術運算

兩張形狀大小完全相同的圖進行加減乘除

原圖如下

黑為0,0圖二中任意的一個像素值還是圖二的值,白為255,255加圖二中任意的一個像素值騎結果超過255,進行截斷,最終結果還是255,即為白色

def add_demo(m1,m2):
    dst=cv.add(m1,m2)
    cv.imshow("add_demo",dst)

!(https://gitee.com/guohui7/weixinpicture/raw/master/img/image-20201004194249572.png)

黑為0,0-圖二中任意的一個像素值為負值,而範圍是0-255,因此取0,即為黑,白為255,255-圖二中任意的一個像素值得到相反的顏色

def subtract_demo(m1,m2):
    dst=cv.subtract(m1,m2)
    cv.imshow("subtract_demo",dst)

應用:顯示兩幅圖像的差異,檢測同一場景 兩幅圖像之間的變化;圖像分割,如分割運動的車輛,減法去掉靜止的部分,剩餘的是運動元素和噪聲。

黑為0,0*圖二中任意的一個像素值為0,為黑,linux原圖外邊框是反鋸齒的(邊緣柔化),有模糊的,並不一定都為0,因此相乘之後會出現那種像煙花的邊邊

def multiply_demo(m1, m2):
    dst = cv.multiply(m1, m2)
    cv.imshow("multiply_demo", dst)

應用:圖像的局部顯示,用二值模板圖像與原圖像做乘法

def divide_demo(m1, m2):
    dst = cv.divide(m1, m2)
    cv.imshow("divide_demo", dst)

2.邏輯運算

def logic_demo(m1, m2):
    dst=cv.bitwise_and(m1,m2)
    cv.imshow("logic_demo", dst)

def logic_demo(m1, m2):
    dst=cv.bitwise_or(m1,m2)
    cv.imshow("logic_demo", dst)

def logic_demo(m1):
    dst=cv.bitwise_not(m1)
    cv.imshow("logic_demo", dst)

3.改變對比度,亮度
def contrast_brightness_demo(image, c, b):
    h, w, ch = image.shape
    #初始化一張黑圖
    blank = np.zeros([h, w, ch], image.dtype)

    # 圖像混合,c, 1-c為這兩張圖片的權重
    dst = cv.addWeighted(image, c, blank, 1-c, b)
    cv.imshow("contrast_brightness_demo", dst)
    
src=cv.imread("./images/lena.jpg")
#對比度1.2,亮度100
contrast_brightness_demo(src,1.2,100)

結果如下:

結語

以上內容僅是自我學習時記錄的筆記,歡迎大家批評指正,一起學習進步。

參考資料[1]

python+opencv3.3視頻教學 基礎入門: https://www.bilibili.com/video/BV1QW411F7e7?p=1

相關焦點

  • OpenCV-Python圖像像素直方圖
    圖像直方圖是反映一個圖像像素分布的統計表,其橫坐標代表了圖像像素的種類,可以是灰度的,也可以是彩色的。縱坐標代表了每一種顏色值在圖像中的像素總數或者佔所有像素個數的百分比。圖像是由像素構成,那麼反映像素分布的直方圖往往可以作為圖像一個很重要的特徵。
  • 學習Opencv不得不掌握的操作
    #include<opencv2\opencv.hpp>  #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;int main(int argc, char** argv){      //這些方式都是自己擁有獨立的內存空間
  • OpenCV 4.5 發布!
    從 4.5 版本開始,OpenCV將正式使用Apache 2 授權協議,對開發者更加友好,避免專利算法進入OpenCV帶來的潛在糾紛。2. 因為SIFT 專利到期,成為公有技術,代碼被移到主庫(其實 4.4 版本已經進了)。
  • 機器視覺常用算法原理及 opencv 實現源碼
    2.灰度圖像基本操作任何顏色都有紅、綠、藍三原色組成,在opencv中使用cvtColor函數使用COLOR_RGB2GRAY參數把彩色圖轉為灰度圖。灰度是指黑白圖像中的顏色深度,每個像素一般使用一個字節存儲,範圍為0-255,共256個灰度等級。白色為255,黑色為0。 灰度圖的預處理包含逐像素處理和卷積處理等。
  • 第7篇•OpenCV篇——OpenCV圖像類Mat
    註:這裡用的Rect為提取前兩個變量為起始點,後兩個變量為長寬的圖像;addWeighted為圖像相加函數,第一個變量為圖像1,第二個變量為圖像1對應的參數,第三個變量為圖像2,第四個變量為圖像2對應的參數,第五個為校正參數,即每個像素都加的值,第六個為相加後的結果,這兩個函數以後詳細說明。最後,如果真需要備份該圖像矩陣怎麼辦呢?使用可以調用該類中的函數clone或者copyTo。
  • OpenCV實現照片自動紅眼去除
    實現代碼如下:vector<Rect> eyes;cvtColor(src, gray, COLOR_BGR2GRAY);equalizeHist(gray, gray);eye_detector.detectMultiScale(gray, eyes, 1.1, 3, 0, Size(100, 100));
  • 使用Python+OpenCV實現圖像數據採集
    通常,數據科學家會建立一個圖像識別模型,觀察其準確性,如果足夠高,就表示工作完成了。
  • OpenCV黑魔法之隱身衣 | 附源碼
    如上所述,關鍵思想是將當前與布料相對應的幀像素替換為背景像素,從而產生一件隱身衣的效果。為此,我們需要存儲一個背景幀。https://www.learnopencv.com/color-spaces-in-opencv-cpp-python/所以當我說,我需要一個特定的顏色,選擇色相組件,然後根據飽和度組件,我得到了那個顏色的不同的陰影,進一步根據值組件,我得到了一個顏色的特定陰影的不同的強度。
  • 如何在Visual Studio上配置OpenCV 4.5.2用於C++項目開發
    環境變量如果不在環境變量中設置opencv中的bin路徑,會出現如下報錯 【由於找不到opencv_world452d.dll, 無法繼續執行代碼】[linker(http://xuzhougeng.top/upload/2021/05/image-75a058ac43214ee9bfb9fb18f884df75.png)添加「opencv_world452d.lib」,該文件包括opencv裡的所有模塊(lib文件和opencv版本有關,可從lib目錄中確認
  • opencv教程-光流法
    opencv裡的光流法有兩種,稀疏光流法 和 稠密光流法。簡單理解的話光流就是一個向量,包含在一定時間間隔內x方向位置的變化、y方向位置的變化,所以其三個主要因素就是dx,dy,dt。prevPts:要匹配的點(比如拐點、角點),float主要輸出:nextPts:根據prevPts以及當前圖像計算的新點status:nextPts與prevPts是否匹配狀態,1為匹配,0為不匹配err:光流點匹配的錯誤信息2:稠密光流法 cv.calcOpticalFlowFarneback每個像素點都有一個光流向量
  • 單片機C語言基礎專題05 - 邏輯運算
    報名連結:單片機C語言基礎專題課程 - 報名即送STC8G單片機基礎仿真板基礎理論:邏輯與或非,運算對象是布爾值(1或0,真或假),類似於數字電路的與門,或門,非門。與關係運算符配合,一般用於選擇語句與循環語句中1、邏輯與符號為&&。
  • 使用Python+OpenCV進行面部合成
    原文 http://www.learnopencv.com/face-morph-using-opencv-cpp-python/
  • 手把手:使用OpenCV進行面部合成— C++ / Python
    簡單來講,你可以用以下方程在每個像素點(x,y)混合圖片但是,用以上方程(假設α= 0.5)得到的國務卿希拉蕊•柯林頓與參議員特德•克魯茲的混合圖片,是下面這個有點糟糕的結果。 所以,為了將圖片I過渡合成到圖片J,我們需要先在兩張圖片之間建立對應像素點。換句話說,對於圖片I中的每一個像素點 ,我們需要在圖片J中找到對應像素點 。假設我們已經神奇般地找到了所有對應點,我們可以用兩個步驟將圖片混合。第一步,我們需要計算合成圖片中像素點 的位置。可以由以下方程算出
  • OpenCV Python 4.0安裝與開發注意事項
    opencv-contrib-python上述命令行會既安裝OpenCV4.0 release模塊又安裝擴展模塊如果你已經安裝了OpenCV以前的3.x版本只需要執行對應的升級安裝命令行如下(假設你已經安裝opencv-python 3.x)pip install –upgrade opencv-python即可升級安裝到最新OpenCV 4.0的Python
  • 在Ubuntu中安裝OpenCV-Python | 三
    在終端(以root用戶身份)中使用以下命令安裝python-opencv:https://packages.ubuntu.com/trusty/python-opencv軟體包。$ sudo apt-get install python-opencv打開Python IDLE(或IPython),然後在Python終端中鍵入以下代碼。
  • 重磅發布 | OpenCV 4.0正式來了
    https://github.com/opencv/opencv/wiki/ChangeLogrelease note中介紹了OpenCV4.0 內含一些特別有用的新特性與新模塊,下面就來先睹為快!新特性1.A lot of C API from OpenCV 1.x has been removed.
  • 【matlab圖像處理】圖像處理的其他算術運算
    今天介紹圖像處理的其他算術運算,包括減法運算、乘法運算、除法運算。本內容參考自《實用MATLAB圖像和視頻處理》第6章。對於matlab的安裝,可以參考以下文章:關於圖像的算術運算,其實就是逐像素進行處理,即在圖像中運算是獨立作用於各個像素的。這裡的運算操作可以是二值操作符,如常見的「加減乘除」。
  • OpenCV 實現多張圖像拼接
    Ptr<Stitcher> stitcher = Stitcher::create(mode);Stitcher::Status status = stitcher->stitch(imgs, pano);其中第一行代碼是創建拼接Stitcher的指針,第二行代碼是調用拼接算法,官方的例子得到效果是非常的好,
  • Python中如何利用Opencv打開視頻或圖像並用PyQt控制項顯示
    一、python中opencv打開圖像方法:import cv2filename='dog.jpg'img=cv2.imread(filename)cv2.imshow('Main Window',img)cv2.waitKey() #任意鍵退出cv2.destroyAllWindows()
  • 50 行代碼,看 Python + OpenCV 玩轉實時圖像處理!
    1、導入庫文件這裡主要使用PySimpleGUI、cv2和numpy庫文件,PySimpleGUI庫文件實現GUI可視化,cv2庫文件是Python的OpenCV接口文件,numpy庫文件實現數值的轉換和運算