日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

openCV专栏(二):基础计算实战+色彩空间转换

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openCV专栏(二):基础计算实战+色彩空间转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OPENCV基礎操作

提示:本專欄所用版本僅供參考,其他版本也可

庫版本
pythonPython 3.9.3
opencv4.5.5
matplotlib3.4.3
numpy1.19.5

學習目錄

  • (一)使用matplotlib庫繪制圖表
  • (二)使用秘鑰加密圖像
    • 1:加密
    • 2:解密(二合一)
  • (三)位平面分解
  • (四)色彩空間
    • 1:色彩空間基本內容
    • 2:色彩空間類型轉換
  • (五)結束語

(一)使用matplotlib庫繪制圖表

?? 簡介:matplotlib是Python最常用的繪圖庫,提供了一整套十分適合交互式繪圖的命令具。
?? 學習任務:簡單使用matplotlib庫創建畫布并加載圖片至畫布

代碼:

import matplotlib.pyplot as plt #導入模塊#創建一個300*300*3的三維矩陣 img1 = np.ones((300,300,3),np.uint8)#在img1的基礎上計算并創建等大矩陣 img2 = img1*80 img3 = img1*160 img4 = img1*255#加載圖像至畫布 plt.subplot(2,2,1)#在畫布上創建行2,列2的四個區域,并指向區域1 plt.imshow(img1,'gray')#將img1加載至區域1 plt.title(1)#設置區域1的標題plt.subplot(2,2,2)#在畫布上創建行2,列2的四個區域,并指向區域2 plt.imshow(img2,'gray')#將img2加載至區域2 plt.title(2)#設置區域2的標題plt.subplot(2,2,3)#在畫布上創建行2,列2的四個區域,并指向區域3 plt.imshow(img3,'gray')#將img3加載至區域3 plt.title(3)#設置區域3的標題plt.subplot(2,2,4)#在畫布上創建行2,列2的四個區域,并指向區域4 plt.imshow(img4,'gray')#將img4加載至區域4 plt.title(4)#設置區域4的標題#顯示圖像 plt.show()

運行結果:


(二)使用秘鑰加密圖像

?? 原理:圖像與手動生成的秘鑰圖像進行按位異或操作,實現加密,反之解密
?? 作用:隱藏圖像
?? 擴展:利用簡單的原理制作一個圖像解碼器

1:加密

import cv2 import numpy as np import matplotlib.pyplot as pltimg = cv2.imread('./111.jpg',0)# 0 代表讀入一張灰度圖像# 2:構建秘鑰圖像 mask = np.random.randint(0,255,(img.shape),dtype = np.uint8)#深成一張img大小的uint8類型的矩陣# 3:加密 maskimg = cv2.bitwise_xor(img,mask)#邏輯位異或操作# 4:加載圖片至畫布 plt.subplot(121) plt.imshow(maskimg,'gray') plt.title("maskimg") plt.show()

2:解密(二合一)

# 1:獲取灰度圖像 img = cv2.imread('./111.jpg',0)# 2:構建秘鑰圖像 mask = np.random.randint(0,255,(img.shape),dtype = np.uint8)# 3:加密 maskimg = cv2.bitwise_xor(img,mask)# 4:加載圖片至畫布 plt.subplot(121) plt.imshow(maskimg,'gray') plt.title("maskimg")# 二:解密 unmaskimg = cv2.bitwise_xor(maskimg,mask)# 5:加載圖片至畫布 plt.subplot(122) plt.imshow(unmaskimg,'gray') plt.title("unmaskimg")# 6:顯示圖像 plt.show()

運行結果:

(三)位平面分解

?? 原理:逐一分解灰度圖每個比特位的二進制像素值,得到八個二進制圖效果:從第0個位平面到第7個位平面分別表現了對圖像的不同影響
?? 數學處理:按位與保留當前比特位
?? 擴展:可將水印圖片藏于影響最小的第0位面中,增加隱蔽性

import cv2 import matplotlib.pyplot as plt import numpy as np """原理:逐一分解灰度圖每個比特位的二進制像素值,得到八個二進制圖效果:從第0個位平面到第7個位平面分別表現了對圖像的不同影響數學處理:按位與保留當前比特位擴展:可將水印圖片藏于任意一個位面圖中,增加隱蔽性 """ # 1:獲取灰度圖像 filename = './111.jpg'#保存圖片路徑 img = cv2.imread(filename,0)#以灰度的形式讀取圖片111# 2:構建提取矩陣 x,y = img.shape#獲取行 列數 construction = np.ones((x,y,8),np.uint8)#構建x行,y列,8個通道的矩陣for i in range(8):construction[:,:,i] = 2**i#通過八次循環給每一個通道寫入一張比特位圖,從低位到高位# 3:提取位平面 for X in range(8):"""將每個通道的表和原圖進行按位與"""construction[:,:,X] = cv2.bitwise_and(construction[:,:,X],img) # 4:法制處理(獲得黑白分明的二值圖) for X in range(8):saveimg = construction[:,:,X]>0construction[saveimg,X] = 255 # 5:顯示圖像 for i in range(8): plt.subplot(2,4,i+1)#將畫布分為兩行四列,當前圖像顯示到第i+1個區塊plt.imshow(construction[:,:,i],cmap='gray')#把圖像加載到plt畫布中plt.title(i)#設置當前圖像標題 plt.show()

運行結果:

(四)色彩空間

1:色彩空間基本內容

?? 介紹:在處理圖像的過程中,我們總是說RGB圖像。在opencv中,RGB是一種比較常見的色彩空間類型,除此之外,還有一些其他的色彩空間,常見的如下:

色彩空間內容
GRAY 灰度圖【單一通道的圖像】
XYZ 更便于計算的色彩空間(常與RGB互相轉換)
Ycrcb 加入了亮度的色彩空間
HSV 人眼感知的模型[色調[0~360],飽和度[0 ~1],亮度[0 ~1]]
HLS 類型HSV[色調[0 ~360],亮度/明度[0 ~1],飽和度[0 ~1]]
CIEL*a*b 均勻色彩空間模型
CIEL*u*v 適用于顯示器顯示和根據加色原理組合的場景
Bayer 用于CCD和CMOS相機中的顏色空間
Bayer 用于CCD和CMOS相機中的顏色空間

2:色彩空間類型轉換

函數原型cv2.cvtColor(src,code[,dstCn])
參數
src:輸入圖像
code:色彩空間轉碼【枚舉】
dstCn:被轉碼圖像通道數
默認表示自動獲取
返回值:輸出轉碼圖像
? 程序: import cv2 import matplotlib.pyplot as plt import numpy as np img = cv2.imread('./111.jpg')#讀入一張RGB圖x,y,n = img.shape All = np.ones((x,y,3,4), dtype=np.uint8)#轉為GRAY灰度色彩空間 All[:,:,0,0] = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#轉為CLE XYZ色彩空間 All[:,:,:,1] = cv2.cvtColor(img,cv2.COLOR_RGB2XYZ) #轉為HSV色彩空間 All[:,:,:,2] = cv2.cvtColor(img,cv2.COLOR_RGB2HSV) #轉為BGR色彩空間 All[:,:,:,3] = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)#加載圖像至畫布 for X in range(4):plt.subplot(2,2,X+1)if X ==0:plt.imshow(All[:,:,0,X],'gray')continueplt.imshow(All[:,:,:,X],'gray')#顯示畫布 plt.show()

運行結果:(可以看到不同的色彩空間效果不同)

(五)結束語

?? 以上就是今天所要分享的內容了
?? 學習路漫漫,我們仍需負重前行……
?? 為此博主新創建了一個群,期待你們的加入:
?? QQ群:928357277

歡迎加入我們的大家庭:928357277

總結

以上是生活随笔為你收集整理的openCV专栏(二):基础计算实战+色彩空间转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。