使用python對圖像加噪聲

加上雨點噪聲

import cv2
import numpy as npdef get_noise(img, value=10):'''#生成噪聲圖像>>> 輸入: img圖像value= 大小控制雨滴的多少 >>> 返回圖像大小的模糊噪聲圖像'''noise = np.random.uniform(0, 256, img.shape[0:2])# 控制噪聲水平,取浮點數,只保留最大的一部分作為噪聲v = value * 0.01noise[np.where(noise < (256 - v))] = 0# 噪聲做初次模糊k = np.array([[0, 0.1, 0],[0.1, 8, 0.1],[0, 0.1, 0]])noise = cv2.filter2D(noise, -1, k)# 可以輸出噪聲看看'''cv2.imshow('img',noise)cv2.waitKey()cv2.destroyWindow('img')'''return noisedef rain_blur(noise, length=10, angle=0,w=1):'''將噪聲加上運動模糊,模仿雨滴>>>輸入noise:輸入噪聲圖,shape = img.shape[0:2]length: 對角矩陣大小,表示雨滴的長度angle: 傾斜的角度,逆時針為正w:      雨滴大小>>>輸出帶模糊的噪聲'''#這里由于對角陣自帶45度的傾斜,逆時針為正,所以加了-45度的誤差,保證開始為正trans = cv2.getRotationMatrix2D((length/2, length/2), angle-45, 1-length/100.0)  dig = np.diag(np.ones(length))   #生成對焦矩陣k = cv2.warpAffine(dig, trans, (length, length))  #生成模糊核k = cv2.GaussianBlur(k,(w,w),0)    #高斯模糊這個旋轉后的對角核,使得雨有寬度#k = k / length                         #是否歸一化blurred = cv2.filter2D(noise, -1, k)    #用剛剛得到的旋轉后的核,進行濾波#轉換到0-255區間cv2.normalize(blurred, blurred, 0, 255, cv2.NORM_MINMAX)blurred = np.array(blurred, dtype=np.uint8)return blurreddef alpha_rain(rain,img,beta = 0.8):#輸入雨滴噪聲和圖像#beta = 0.8   #results weight#顯示下雨效果#expand dimensin#將二維雨噪聲擴張為三維單通道#并與圖像合成在一起形成帶有alpha通道的4通道圖像rain = np.expand_dims(rain,2)rain_effect = np.concatenate((img,rain),axis=2)  #add alpha channelrain_result = img.copy()    #拷貝一個掩膜rain = np.array(rain,dtype=np.float32)     #數據類型變為浮點數,后面要疊加,防止數組越界要用32位rain_result[:,:,0]= rain_result[:,:,0] * (255-rain[:,:,0])/255.0 + beta*rain[:,:,0]rain_result[:,:,1] = rain_result[:,:,1] * (255-rain[:,:,0])/255 + beta*rain[:,:,0] rain_result[:,:,2] = rain_result[:,:,2] * (255-rain[:,:,0])/255 + beta*rain[:,:,0]#對每個通道先保留雨滴噪聲圖對應的黑色(透明)部分,再疊加白色的雨滴噪聲部分(有比例因子)cv2.imwrite('rain_result.png', np.uint8(rain_result))img = cv2.imread('cv.png')
noise = get_noise(img,value=500)
rain = rain_blur(noise,length=50,angle=-30,w=3)
alpha_rain(rain,img,beta=0.6)

在這里插入圖片描述

在這里插入圖片描述

加上光斑噪聲

利用一張光斑的圖像加在原始圖像上:

import numpy as np
import cv2
from PIL import Imageimage1 = cv2.imread('cub1.jpg')
image2 = cv2.imread('ban.jpg')height = image1.shape[0]
width = image1.shape[1]
image2 = cv2.resize(image2, (width, height), interpolation = cv2.INTER_LINEAR)
image = (image1 + image2) // 2cv2.imwrite('cv.png', np.uint8(image))

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35612.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35612.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35612.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

誰能講清楚Spark之與MapReduce的對比

我們已經知道Spark是如何設計和實現數據處理流程的,這里我們 再深入思考一下,為什么Spark能夠替代MapReduce成為主流的大數據處理框架呢?對比MapReduce,Spark究竟有哪些優勢? 一 優勢 1 通用性: 基于函數式編程思想,MapReduce將數據類型抽象為,k,v格式,并將數據處理…

Spring Boot單元測試使用MockBean注解向Service注入Mock對象

1. 背景介紹 我們在測試時有一個Service&#xff0c;我們需要測試Service&#xff0c;但Service內部依賴ServiceA、ServiceB&#xff0c;此時我們希望Mock ServiceA&#xff0c;ServiceB 注入真實對象。 class Service {private ServiceA A;private ServiceB B;public int me…

OPENCV C++(十二)模板匹配

正常模板匹配函數 matchTemplate(img, templatee, resultMat, 0);//模板匹配 這里0代表的是方法&#xff0c;一般默認為0就ok img是輸入圖像 templatee是模板 resultmat是輸出 1、cv::TM_SQDIFF&#xff1a;該方法使用平方差進行匹配&#xff0c;因此最佳的匹配結果在結果為…

Excel(1):表頭或列頭凍結

1.需求 對于較大的excel&#xff0c;通常需要固定一部分內容&#xff0c;另一份內容為可翻動。 2.解決方式 在視圖中選擇凍結窗格&#xff0c;需要注意的是&#xff0c;選擇凍結窗格時&#xff0c;窗格的左上方的表格區域是固定不動的&#xff0c;只可以向下或者向右活動。

8.10論文閱讀

文章目錄 The multimodal MRI brain tumor segmentation based on AD-Net摘要本文方法損失函數 實驗結果 max-vit - unet:多軸注意力醫學圖像分割摘要本文方法實驗結果 The multimodal MRI brain tumor segmentation based on AD-Net 摘要 基于磁共振成像(MRI)的多模態膠質瘤…

Redis分布式鎖問題

1、業務單機情況下 問題&#xff1a;并發沒有加鎖導致線程安全問題。 解決方法&#xff1a;加鎖處理&#xff0c;如lock、synchronized 仍有問題&#xff1a;業務分布式情況下&#xff0c;代碼級別加鎖已經無效。需要借助第三方組件&#xff0c;如redis、zookeeper。 2、業務分…

云計算|OpenStack|使用VMware安裝華為云的R006版CNA和VRM---初步使用(二)

前言&#xff1a; 在前面一篇文章云計算|OpenStack|使用VMware安裝華為云的R006版CNA和VRM---初始安裝&#xff08;一&#xff09;_華為cna_晚風_END的博客-CSDN博客 介紹了基于VMware虛擬機里嵌套部署華為云的云計算&#xff0c;不過僅僅是做到了在VRM的web界面添加計算節點…

Kubernetes的默認調度和自定義調度詳解

默認調度和自定義調度詳解 默認調度 默認調度是 Kubernetes 中的內置機制&#xff0c;它使用調度器組件來管理分配容器的節點。調度器依據以下原則選擇合適的節點&#xff1a; 資源需求 &#xff1a;調度器會為每個 Pod 根據其 CPU 和內存需求選擇一個具有足夠資源的節點。親…

Android使用kotlin+協程+room數據庫的簡單應用

前言&#xff1a;一般主線程&#xff08;UI線程&#xff09;中是不能執行創建數據這些操作的&#xff0c;因為等待時間長。所以協程就是為了解決這個問題出現。 第一步&#xff1a;在模塊級的build.gradle中引入 id com.android.application// roomid kotlin-androidid kotlin…

Mysql主從分離

一、前言 某個應用場景中&#xff0c;在操作數據庫這部分&#xff0c;往往是數據庫的讀取往往大于數據庫的寫入&#xff0c;當讀取數據達到數據庫的瓶頸時&#xff0c;性能下滑&#xff0c;影響數據的寫入&#xff0c;導致整個應用的不可用。為了解決這個問題&#xff0c;這時&…

單片機直驅兩相四線步進電機研究

【本文發布于https://blog.csdn.net/Stack_/article/details/132236329&#xff0c;未經允許不得轉載&#xff0c;轉載須注明出處】 雙極性步進電機&#xff08;兩相四線步進電機&#xff09;&#xff0c;原理的東西就先不講太多了&#xff0c;還沒搞清楚&#xff0c;邊查資料邊…

jsoup解析html之table表格

jsoup解析html之table表格 jsoup說明 一款Java 的HTML解析器 jsoup 是一款Java 的HTML解析器&#xff0c;可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API&#xff0c;可通過DOM&#xff0c;CSS以及類似于jQuery的操作方法來取出和操作數據。 主要功能 從一…

Python Opencv實踐 - 圖像旋轉

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)#圖像旋轉 #Opencv中的旋轉&#xff0c;首先通過cv.getRotationMatrix2D獲得旋轉矩陣 #cv.getRotationMatrix2D(center,ang…

Mr. Cappuccino的第62杯咖啡——Spring之Bean的生命周期

Spring之Bean的生命周期 Aware接口項目結構項目代碼運行結果源代碼使用場景 InitializingBean接口項目結構項目代碼運行結果源代碼 BeanFactoryPostProcessor接口項目結構項目代碼運行結果源代碼 Bean的生命周期項目結構項目代碼運行結果源代碼 Aware接口 實現Aware接口是為了…

微信小程序實現圖片多點裁剪

話不多說&#xff0c;直接上代碼 1、頁面布局 <view class"buttons" style"height: 50px;"><view class"upload btn" style"background-color: #d18118;"bindtap"uploadImage"> 上傳圖片 </view><vie…

機器視覺項目流程和學習方法

機器視覺項目流程&#xff1a; 00001. 需求分析和方案建立 00002. 算法流程規劃和業務邏輯設計 00003. 模塊化編程和集成化實現 00004. 調試和優化&#xff0c;交付客戶及文檔 學習機器視覺的方法&#xff1a; 00001. 實戰學習&#xff0c;結合項目經驗教訓 00002. 學習…

c++參數傳遞

函數的參數傳遞 指的是形參與實參結合的過程&#xff0c;其基本方式包括值傳遞和引用傳遞兩種。 值傳遞 該方法把參數的實際值復制給函數的形式參數。在這種情況下&#xff0c;修改函數內的形式參數對實際參數沒有影響 #include<iostream> using namespace std;void swap…

NAS搭建指南二——影視資源中心

1. 刮削 這一部分是利用 tinyMediaManager 進行影視資源的評分、簡介以及圖片的搜集工作tinyMediaManager 官方網站地址下載及安裝過程&#xff1a;略我的主要修改的設置項如下所示&#xff1a; 使用方法&#xff1a; a. 點擊更新媒體庫 b. 選擇影片–>右鍵單擊–>…

時序預測 | MATLAB實現基于BiLSTM雙向長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價)

時序預測 | MATLAB實現基于BiLSTM雙向長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價) 目錄 時序預測 | MATLAB實現基于BiLSTM雙向長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價)預測結果基本介紹程序設計參考資料 預測結果 基本介紹 Matlab實現BiLST…

C++中的回調函數

1.普通函數作為回調函數 #include <iostream>void programA_FunA1() { printf("Iam ProgramA_FunA1 and be called..\n"); }void programA_FunA2() { printf("Iam ProgramA_FunA2 and be called..\n"); }void programB_FunB1(void (*callback)()) {…