05-圖像的美化

一、彩色圖片直方圖

cv2.calcHist([image],[0],None,[256],[0.0,255.0])
該方法的所有參數都必須用中括號括起來!!!
參數一:傳入的圖片數據
參數二:用于計算直方圖的通道,這里使用的是灰度直方圖,所以就使用第一個通道,第一個通道下標是0
參數三:mask模板,這里沒有用,所以給個None
參數四:直方圖的橫坐標尺度size,表明直方圖分成多少份,或有多少個柱狀;256表示0-255總共256個灰度值
參數五:直方圖中各個像素的值0.0-255.0表明從0.0開始已知到255.0所以的像素都進行遍歷,因為灰度值只能是0-255之內

cv2.minMaxLoc(hist)
計算當前hist這個直方圖中的最小值、最大值、最小值對應的下標和最大值對應的下標

cv2.split(img)
圖像分解,將彩色圖片的RGB分解為R G B三個通道

import cv2
import numpy as np
def ImageHist(image,type):color = (255,255,255)#定義當前顏色為白色windowName = 'Gray'#定義一個windows窗體if type == 31:#藍色直方圖color = (255,0,0)windowName = 'B Hist'elif type == 32:#綠色直方圖color = (0,255,0)windowName = 'G Hist'elif type == 33:#紅色直方圖color = (0,0,255)windowName = 'R Hist'hist = cv2.calcHist([image],[0],None,[256],[0.0,255.0])#計算直方圖方法minV,maxV,minL,maxL = cv2.minMaxLoc(hist)#計算當前hist這個直方圖中的最大值、最小值以及其分別對應的下標histImg = np.zeros([256,256,3],np.uint8)for h in range(256):intenNormal = int(hist[h]*256/maxV)#將所有的像素值歸到0-256之間,將圖片上的像素進行歸一化操作cv2.line(histImg,(h,256),(h,256-intenNormal),color)cv2.imshow(windowName,histImg)return histImgimg = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1)
channels = cv2.split(img)# 圖像分解,將RGB圖片分解為R G B三個通道
for i in range(0,3):#遍歷顏色通道0、1、2ImageHist(channels[i],31+i)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

二、直方圖均衡化

灰度圖片的直方圖均衡化

cv2.equalizeHist(gray)
灰度圖的均衡化方法,只需要傳入一個灰度圖即可,其實針對的是一個顏色通道,若是彩色圖片有三個顏色通道需要分三次進行均衡化

import cv2
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/Aa.jpg',1)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#將彩色圖轉換為灰度圖
cv2.imshow('src',gray)
dst = cv2.equalizeHist(gray)
cv2.imshow('dst',dst)
cv2.waitKey(0)

效果圖如下(左原圖,右均衡化圖片):
在這里插入圖片描述

彩色圖片的直方圖均衡化

cv2.split(img)
圖像分解,將彩色圖片的RGB分解為R G B三個通道

cv2.merge((bH,gH,rH))
將單一的顏色通道進行合成到一起

import cv2
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/Aa.jpg',1)
cv2.imshow('src',img)
(b,g,r) = cv2.split(img)#通道分解
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)
result = cv2.merge((bH,gH,rH))# 通道合成
cv2.imshow('dst',result)
cv2.waitKey(0)

效果圖如下(左原圖,右均衡化圖片):
在這里插入圖片描述

YUV圖像的直方圖均衡化

yuv是一種類似rgb的顏色模型,起源于黑白和彩電的過渡時期。
其中Y代表亮度,uv組合起來可以表示色度。
yuv信息只有y的信息就足以顯示黑白的圖片,
yuv和YCbCr表示相同的東西,且Cb嚴格對應U,Cr嚴格對應V

cv2.split(imgYUV)
圖像分解,將彩色圖片的RGB分解為R G B三個通道

cv2.equalizeHist(channelYUV[0])
對第一個顏色通道拿出來進行均衡化

cv2.merge(channelYUV)
將單一的顏色通道進行合成到一起

import cv2
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/Aa.jpg',1)
imgYUV = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)#將BGR彩色圖片轉換為YUV圖片
cv2.imshow('src',img)
channelYUV = cv2.split(imgYUV)
channelYUV[0] = cv2.equalizeHist(channelYUV[0])
channels = cv2.merge(channelYUV)
result = cv2.cvtColor(channels,cv2.COLOR_YCrCb2BGR)#將YUV圖片轉換為BGR彩色圖片
cv2.imshow('dst',result)
cv2.waitKey(0)

效果圖如下(左原圖,右均衡化圖片):
在這里插入圖片描述

三、圖片修補

cv2.inpaint(img,paint,3,cv2.INPAINT_TELEA)
參數一:毀壞的圖片
參數二:修復的內容部分,mask模板
參數三:修復圖片的線條粗細值。由于毀壞圖片的時候進行的三個像素格的毀壞,故這里修復的線條粗細值為3
參數四:圖片修復類型

對一張圖片進行毀壞,并保存,這里使用的是改變圖片中某位置的像素值從而達到毀壞圖片的目的

import cv2 
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1)
for i in range(200,300):#對圖片進行畫線進行毀壞img[i,200] = (255,255,255)img[i,200+1] = (255,255,255)img[i,200-1] = (255,255,255)
for i in range(150,250):#對圖片進行畫線進行毀壞img[250,i] = (255,255,255)img[250+1,i] = (255,255,255)img[250-1,i] = (255,255,255)cv2.imwrite('E:\Jupyter_workspace\study\data/damaged.jpg',img)#保存一下毀壞的圖片
cv2.imshow('image',img)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述
對毀壞的圖片進行制作修復模板mask來修復圖片

import cv2 
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/damaged.jpg',1)#讀取毀壞的圖片信息
cv2.imshow('src',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
paint = np.zeros((height,width,1),np.uint8)for i in range(200,300):#填補的模板參數,也就是剛才所繪制的畫線paint[i,200] = 255#為了使得線段更加paint[i,200+1] = 255paint[i,200-1] = 255
for i in range(150,250):paint[250,i] = 255paint[250+1,i] = 255paint[250-1,i] = 255
cv2.imshow('paint',paint)imgDst = cv2.inpaint(img,paint,3,cv2.INPAINT_TELEA)#定義目標圖片,即修復之后的圖片cv2.imshow('image',imgDst)
cv2.waitKey(0)

效果圖如下(左毀壞圖片,中修復模板mask掩模,右修復過后的圖片):

在這里插入圖片描述

四、灰度直方圖源碼

灰度直方圖的本質:統計每個像素灰度值出現的概率0-255

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('E:\Jupyter_workspace\study/w1.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
count = np.zeros(256,np.float)
for i in range(0,height):for j in range(0,width):pixel = gray[i,j]index = int(pixel)count[index] = count[index]+1
for i in range(0,255):count[i] = count[i]/(height*width)
x = np.linspace(0,255,256)
y = count
plt.bar(x,y,0.9,alpha=1,color='r')
plt.show()
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

五、彩色直方圖源碼

彩色直方圖的本質:分別統計每個顏色通道上的像素值出現的概率0-255

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('E:\Jupyter_workspace\study/w1.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]#對每個顏色通道上的像素值進行統計
count_b = np.zeros(256,np.float)
count_g = np.zeros(256,np.float)
count_r = np.zeros(256,np.float)for i in range(0,height):for j in range(0,width):(b,g,r) = img[i,j]#圖片的像素值信息讀取到元組(b,g,r)中index_b = int(b)#將像素值轉換為int類型便于統計index_g = int(g)index_r = int(r)count_b[index_b] = count_b[index_b]+1#實現blue這個顏色通道上的像素的統計count_g[index_g] = count_g[index_g]+1count_r[index_r] = count_r[index_r]+1
for i in range(0,256):#遍歷每一個像素等級count_b[i] = count_b[i]/(height*width)#對像素值出現的個數進行歸一化處理count_g[i] = count_g[i]/(height*width)count_r[i] = count_r[i]/(height*width)
x = np.linspace(0,255,256)#從0開始,到255結束,一共256個
y1 = count_b
plt.figure()
plt.bar(x,y1,0.9,alpha=1,color='b')#繪制blue顏色通道的柱狀圖
y2 = count_g
plt.figure()
plt.bar(x,y2,0.9,alpha=1,color='g')
y3 = count_r
plt.figure()
plt.bar(x,y3,0.9,alpha=1,color='r')
plt.show()
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

六、灰度直方圖均衡化

本質:統計每個像素灰度 出現的概率 0-255
累計概率

灰度等級出現的概率累積概率
10.20.1
20.30.5=0.2+0.3
30.10.6=0.2+0.3+0.1

總共256個灰度等級,每個灰度等級都會有一個出現概率,也都會有一個累積概率

灰度等級(100),累積概率(0.5),100到這個新值之間的映射(2550.5),以后所有的100等級這個像素都使用2550.5進行替代,替代完成之后就是直方圖的均衡化

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1)
#cv2.imshow('img',img)imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray',gray)
count = np.zeros(256,np.float)
for i in range(0,height):for j in range(0,width):pixel = gray[i,j]index = int(pixel)count[index] = count[index]+1
for i in range(0,255):count[i] = count[i]/(height*width)
#計算累計概率
sum1 = float(0)
for i in range(0,256):sum1 = sum1+count[i]count[i] = sum1
#print(count)
# 計算映射表
map1 = np.zeros(256,np.uint16)
for i in range(0,256):map1[i] = np.uint16(count[i]*255)
# 映射
for i in range(0,height):for j in range(0,width):pixel = gray[i,j]gray[i,j] = map1[pixel]
cv2.imshow('dst',gray)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

七、彩色直方圖均衡化

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1)
cv2.imshow('src',img)imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]count_b = np.zeros(256,np.float)
count_g = np.zeros(256,np.float)
count_r = np.zeros(256,np.float)
for i in range(0,height):for j in range(0,width):(b,g,r) = img[i,j]index_b = int(b)index_g = int(g)index_r = int(r)count_b[index_b] = count_b[index_b]+1count_g[index_g] = count_g[index_g]+1count_r[index_r] = count_r[index_r]+1
for i in range(0,255):count_b[i] = count_b[i]/(height*width)count_g[i] = count_g[i]/(height*width)count_r[i] = count_r[i]/(height*width)
#計算累計概率
sum_b = float(0)
sum_g = float(0)
sum_r = float(0)
for i in range(0,256):sum_b = sum_b+count_b[i]sum_g = sum_g+count_g[i]sum_r = sum_r+count_r[i]count_b[i] = sum_bcount_g[i] = sum_gcount_r[i] = sum_r
#print(count)
# 計算映射表
map_b = np.zeros(256,np.uint16)
map_g = np.zeros(256,np.uint16)
map_r = np.zeros(256,np.uint16)
for i in range(0,256):map_b[i] = np.uint16(count_b[i]*255)map_g[i] = np.uint16(count_g[i]*255)map_r[i] = np.uint16(count_r[i]*255)
# 映射
dst = np.zeros((height,width,3),np.uint8)
for i in range(0,height):for j in range(0,width):(b,g,r) = img[i,j]b = map_b[b]g = map_g[g]r = map_r[r]dst[i,j] = (b,g,r)
cv2.imshow('dst',dst)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

八、亮度增強

實現思路:在原來的亮度基礎上+40,從而達到亮度增強的效果

import cv2
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
cv2.imshow('src',img)
dst = np.zeros((height,width,3),np.uint8)
for i in range(0,height):for j in range(0,width):(b,g,r) = img[i,j]bb = int(b)+40gg = int(g)+40rr = int(r)+40if bb>255:bb = 255if gg>255:gg = 255if rr>255:rr = 255dst[i,j] = (bb,gg,rr)
cv2.imshow('dst',dst)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述
當然也可以改變顏色通道乘以一個比例系數再加上一個常數的方法實現美白效果
例如:(b1.3)+10、(g1.2)+15、r不變

import cv2
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/cat.png',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
cv2.imshow('src',img)
dst = np.zeros((height,width,3),np.uint8)
for i in range(0,height):for j in range(0,width):(b,g,r) = img[i,j]bb = int(b*1.3)+10gg = int(g*1.2)+15if bb>255:bb = 255if gg>255:gg = 255dst[i,j] = (bb,gg,r)
cv2.imshow('dst',dst)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

九、磨皮美白

調用API雙邊濾波
雙邊濾波:高斯濾波核g+距離核r,進行加權算出一個共同的核p,并用當前的和乘以像素,與像素進行卷積,就可以得到一個新的像素,這個新的像素就是經過雙邊濾波后的像素

import cv2
img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',1)
cv2.imshow('src',img)
dst = cv2.bilateralFilter(img,15,35,35)
cv2.imshow('dst',dst)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

十、高斯、均值濾波

濾波0的本質:矩陣對應點相乘并求和
在這里插入圖片描述
右邊是卷積核,為啥成1/16,是因為這個卷積元素之和為16,而且這個卷積核越中間值越大,越兩邊值越小

高斯濾波使用API的方式進行調用

import cv2
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',1)
cv2.imshow('src',img)
dst = cv2.GaussianBlur(img,(5,5),1.5)
cv2.imshow('dst',dst)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述
均值濾波使用源碼方式進行調用(為了防止溢出,圖像邊緣并進行處理)
首先定義一個模板,比如66的模板,數據全為1,用這個全為1的模板數據 乘以 一個66矩陣中的所有的數據,乘完之后再除以36,這樣便得到一個均值,把這個均值替換掉原來的像素值,則實現均值濾波效果

import cv2
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',1)
cv2.imshow('src',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
for i in range(3,height-3):for j in range(3,width-3):sum_b = int(0)sum_g = int(0)sum_r = int(0)for m in range(-3,3):#-3 -2 -1 0 1 2for n in range(-3,3):(b,g,r) = img[i+m,j+n]sum_b = sum_b+int(b)sum_g = sum_g+int(g)sum_r = sum_r+int(r)b = np.uint8(sum_b/36)g = np.uint8(sum_g/36)r = np.uint8(sum_r/36)dst[i,j] = (b,g,r)
cv2.imshow('dst',dst)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

十一、中值濾波

算法思路:假如定義一個3*3的模板,這個模板中一共有9個像素,將這9個像素進行排序,排序之后選擇中間的那個像素值去代替其他像素值

import cv2
import numpy as np
img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
img = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
cv2.imshow('src',img)
dst = np.zeros((height,width,3),np.uint8)
collect = np.zeros(9,np.uint8)
for i in range(1,height-1):for j in range(1,width-1):k = 0for m in range(-1,2):#-1 0 1for n in range(-1,2):gray = img[i+m,j+n]collect[k] = grayk = k+1for k in range(0,9):#冒泡排序,從前往后比較,每輪比較選出最大值放到最后面p1 = collect[k]for t in range(k+1,9):if p1<collect[t]:mid = collect[t]collect[t] = p1p1 = middst[i,j] = collect[4]#該值就是中間值,用中間值去代替所有的像素值
cv2.imshow('dst',dst)
cv2.waitKey(0)

效果圖如下:
在這里插入圖片描述

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

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

相關文章

java 檢查目錄是否存在_如何檢查Java目錄是否存在?

java 檢查目錄是否存在We are using the File class that is an abstract representation of file and directory path. To check if a directory exists we have to follow a few steps: 我們正在使用File類 &#xff0c;它是文件和目錄路徑的抽象表示。 要檢查目錄是否存在&a…

Eclipse for android 中設置java和xml代碼提示功能(轉)

1、設置 java 文件的代碼提示功能 打開 Eclipse 依次選擇 Window > Preferences > Java > Editor - Content Assist > Auto activation triggers for Java &#xff0c;設置框中默認是一個點&#xff0c; 現在將它改為&#xff1a; 以下為引用內容&#xff1a; .a…

MySQL 定時器EVENT學習

MySQL 定時器EVENT學習 MySQL從5.1開始支持event功能&#xff0c;類似oracle的job功能。有了這個功能之后我們就可以讓MySQL自動的執行數據匯總等功能&#xff0c;不用像以前需要操作的支持了。如linux crontab功能 。 創建測試表CREATE TABLE t( v VARCHAR(100) NOT NULL…

如何利用FFT(基2時間以及基2頻率)信號流圖求序列的DFT

直接用兩個例子作為模板說明&#xff1a; 利用基2時間抽取的FFT流圖計算序列的DFT 1、按照序列x[k]序號的偶奇分解為x[k]和x2[k]&#xff0c;即x1[k]{1,1,2,1}, x2[k]{-1,-1,1,2} 2、畫出信號流圖并同時進行計算 計算的時候需要參考基本蝶形單元&#xff1a; 關鍵在于 (WN) k…

matlab4.0,matlab?4.0

4.1fort-9:0.5:9if(t>0)y-(3*t^2)5;fprintf(y%.2ft%.2f\n,y,t);elsey(3*t^2)5;fprintf(y%.2ft%.2f\n,y,t);endend編譯結果&#xff1a;y248.00t-9.00y221.75t-8.50y197.00t-8.00y173.75t-7.50y152.00t-7.00y131.75t-6.50y113.00t-6.00y95.75t-5.50y80.00t-5.00y65.75t-4.50y…

圖形學 射線相交算法_計算機圖形學中的陰極射線管

圖形學 射線相交算法陰極射線管 (Cathode Ray Tube) Ferdinand Barun of Strasbourg developed the cathode ray tube in the year 1897. It used as an oscilloscope to view and measure some electrical signals. But several other technologies exist and solid state mov…

Constructor總結

一個類如果沒有構造那么系統為我們在背后創建一個0參數的構造&#xff0c;但是一旦我們創建了但參數的構造&#xff0c;那么默認的構造就沒了。 View Code 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 6 namespace Console…

Python連接MySQL及一系列相關操作

一、首先需要安裝包pymysql(python3所對應) 我使用的是Anaconda全家桶&#xff0c;打開cmd&#xff0c;進入Anaconda下的Scripts文件夾下輸入命令&#xff1a;pip install pymysql進行下載安裝 二、我使用的編譯器為Anaconda所帶的Jupyter Notebook 1&#xff0c;在mysql中…

微機原理—可編程計數器/定時器8253概念詳解

目錄前言【1】定時處理方法1、定時的方法&#xff1a;2、定時和計數器【2】8253計數/定時器1、特點&#xff1a;2、芯片引腳以及電路&#xff1a;3、連接方式&#xff1a;4、工作原理&#xff1a;5、寄存器配置a、初始化操作&#xff08;三個通道單獨初始化&#xff09;b、讀出…

php靜態分析工具window,window_SpeedPHP框架核心調試工具,在日常的編程開發當中,開發 - phpStudy...

SpeedPHP框架核心調試工具在日常的編程開發當中&#xff0c;開發者經常會使用到對變量的調試&#xff0c;而sp框架提供的變量調試輸出函數——dump正好滿足了變量調試的需求。下面來介紹一下dump函數的使用方法。dump —— 變量格式化輸出函數用法&#xff1a;dump($vars, $out…

python 溫度轉換程序_Python程序將米轉換為碼

python 溫度轉換程序There are many problems where we have to calculate the distance in yards at the end but initially, the measurements are given in meters. So for such type of problems, the solution is converting the initial parameters into yards and then …

Oracle轉Sqlserver 記錄

使用了微軟的SSMA幫忙&#xff0c;但是目前只有表能幫忙轉&#xff0c;其他的還是要手動改&#xff0c;- - oracle 可以這樣查詢AppServiceInfoaspdb &#xff0c;調用其他庫的表。SQL是&#xff1a; aspdb.dob.AppServiceInfo si數據庫需要和 aspdb ASPDB_Capacity 在siinf…

形參與實參在函數中的傳遞

#include <iostream> #include <cstring> using namespace std; void myFun(int a[]); int main() {int a[10];cout<<"aaa"<<sizeof(a)<<endl;//40 int為4&#xff0c;a為10個int&#xff0c;故為40cout<<"yy"<<…

帶你走進緩存世界

我們搞程序的多多少少都了解點算法。總體來講&#xff0c;算法是什么&#xff1f;算法就是“時間”和“空間”的互換策略。我們常常考究一個算法的時間復雜度或空間復雜度&#xff0c;如果我們有絕對足夠的時間或空間&#xff0c;那么算法就不需要了&#xff0c;可惜這種條件是…

霍夫碼編碼(一種不等長,非前綴編碼方式)

霍夫曼編碼是一種不等長非前綴編碼方式&#xff0c;于1951年由MIT的霍夫曼提出。 用于對一串數字/符號編碼獲取最短的結果&#xff0c;獲取最大的壓縮效率。 特點&#xff1a;不等長、非前綴 等長式編碼 等長編碼&#xff0c;意思是對出現的元素采用相同位數的序號進行標定&a…

php調用shell腳本安全,從PHP調用的shell腳本問題

TLDR;我有一個shell腳本,從命令行運行時工作正常,但如果從PHP腳本中調用(通過Web訪問)則不行.在這兩種情況下,主叫用戶都是www-data.線路失敗是這樣的&#xff1a;openssl genrsa -des3 -out certs/$PCODE.key -passout env:PASSPHRASE 2048為什么會這樣&#xff1f;我該怎么調…

linux 運維基礎問題_Linux基礎能力問題和解答

linux 運維基礎問題This section contains Aptitude Questions and Answers on Linux Basics. 本節包含有關Linux基礎知識的 Aptitude問答。 1) There are the following statements that are given below, which of them are correct about Linux? Linux is system software…

JS 獲取瀏覽器信息,給出友情提示,避免部分兼容性問題

最近在做webform,瀏覽器兼容是個問題,這里我收集了一些獲取瀏覽器信息的資料,可以給一些用戶使用時,提示瀏覽器版本過低,讓升級版本用. 這樣會給開發的我們,省下很多用來調試兼容性的時間和精力. 本人就是這樣想的 ~  檢測瀏覽器及版本使用 JavaScript 檢測關于訪問者的瀏覽器…

兩欄 三欄的css

三欄格局 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns"http://www.w3.org/1999/xhtml" xml:lang"zh" lang"zh"><head pro…

06-機器學習(Haar+Adaboost實現人臉、人眼檢測)

機器學習是什么? 機器學習訓練樣本特征分類器&#xff0c;通過讓機器學習的方式&#xff0c;來達到某種功能的過程 深度學習是什么&#xff1f; 深度學習海量的學習樣本人工神經網絡 機器學習需要&#xff1a;樣本、特征、分類器、對訓練后的數據進行預測或檢驗 人臉樣本haar…