openCV专栏(二):基础计算实战+色彩空间转换
OPENCV基礎(chǔ)操作
提示:本專欄所用版本僅供參考,其他版本也可
| python | Python 3.9.3 |
| opencv | 4.5.5 |
| matplotlib | 3.4.3 |
| numpy | 1.19.5 |
學(xué)習(xí)目錄
- (一)使用matplotlib庫(kù)繪制圖表
- (二)使用秘鑰加密圖像
- 1:加密
- 2:解密(二合一)
- (三)位平面分解
- (四)色彩空間
- 1:色彩空間基本內(nèi)容
- 2:色彩空間類型轉(zhuǎn)換
- (五)結(jié)束語(yǔ)
(一)使用matplotlib庫(kù)繪制圖表
?? 簡(jiǎn)介:matplotlib是Python最常用的繪圖庫(kù),提供了一整套十分適合交互式繪圖的命令具。
?? 學(xué)習(xí)任務(wù):簡(jiǎn)單使用matplotlib庫(kù)創(chuàng)建畫(huà)布并加載圖片至畫(huà)布
代碼:
import matplotlib.pyplot as plt #導(dǎo)入模塊#創(chuàng)建一個(gè)300*300*3的三維矩陣 img1 = np.ones((300,300,3),np.uint8)#在img1的基礎(chǔ)上計(jì)算并創(chuàng)建等大矩陣 img2 = img1*80 img3 = img1*160 img4 = img1*255#加載圖像至畫(huà)布 plt.subplot(2,2,1)#在畫(huà)布上創(chuàng)建行2,列2的四個(gè)區(qū)域,并指向區(qū)域1 plt.imshow(img1,'gray')#將img1加載至區(qū)域1 plt.title(1)#設(shè)置區(qū)域1的標(biāo)題plt.subplot(2,2,2)#在畫(huà)布上創(chuàng)建行2,列2的四個(gè)區(qū)域,并指向區(qū)域2 plt.imshow(img2,'gray')#將img2加載至區(qū)域2 plt.title(2)#設(shè)置區(qū)域2的標(biāo)題plt.subplot(2,2,3)#在畫(huà)布上創(chuàng)建行2,列2的四個(gè)區(qū)域,并指向區(qū)域3 plt.imshow(img3,'gray')#將img3加載至區(qū)域3 plt.title(3)#設(shè)置區(qū)域3的標(biāo)題plt.subplot(2,2,4)#在畫(huà)布上創(chuàng)建行2,列2的四個(gè)區(qū)域,并指向區(qū)域4 plt.imshow(img4,'gray')#將img4加載至區(qū)域4 plt.title(4)#設(shè)置區(qū)域4的標(biāo)題#顯示圖像 plt.show()運(yùn)行結(jié)果:
(二)使用秘鑰加密圖像
?? 原理:圖像與手動(dòng)生成的秘鑰圖像進(jìn)行按位異或操作,實(shí)現(xiàn)加密,反之解密
?? 作用:隱藏圖像
?? 擴(kuò)展:利用簡(jiǎn)單的原理制作一個(gè)圖像解碼器
1:加密
import cv2 import numpy as np import matplotlib.pyplot as pltimg = cv2.imread('./111.jpg',0)# 0 代表讀入一張灰度圖像# 2:構(gòu)建秘鑰圖像 mask = np.random.randint(0,255,(img.shape),dtype = np.uint8)#深成一張img大小的uint8類型的矩陣# 3:加密 maskimg = cv2.bitwise_xor(img,mask)#邏輯位異或操作# 4:加載圖片至畫(huà)布 plt.subplot(121) plt.imshow(maskimg,'gray') plt.title("maskimg") plt.show()2:解密(二合一)
# 1:獲取灰度圖像 img = cv2.imread('./111.jpg',0)# 2:構(gòu)建秘鑰圖像 mask = np.random.randint(0,255,(img.shape),dtype = np.uint8)# 3:加密 maskimg = cv2.bitwise_xor(img,mask)# 4:加載圖片至畫(huà)布 plt.subplot(121) plt.imshow(maskimg,'gray') plt.title("maskimg")# 二:解密 unmaskimg = cv2.bitwise_xor(maskimg,mask)# 5:加載圖片至畫(huà)布 plt.subplot(122) plt.imshow(unmaskimg,'gray') plt.title("unmaskimg")# 6:顯示圖像 plt.show()運(yùn)行結(jié)果:
(三)位平面分解
?? 原理:逐一分解灰度圖每個(gè)比特位的二進(jìn)制像素值,得到八個(gè)二進(jìn)制圖效果:從第0個(gè)位平面到第7個(gè)位平面分別表現(xiàn)了對(duì)圖像的不同影響
?? 數(shù)學(xué)處理:按位與保留當(dāng)前比特位
?? 擴(kuò)展:可將水印圖片藏于影響最小的第0位面中,增加隱蔽性
運(yùn)行結(jié)果:
(四)色彩空間
1:色彩空間基本內(nèi)容
?? 介紹:在處理圖像的過(guò)程中,我們總是說(shuō)RGB圖像。在opencv中,RGB是一種比較常見(jiàn)的色彩空間類型,除此之外,還有一些其他的色彩空間,常見(jiàn)的如下:
| GRAY | 灰度圖【單一通道的圖像】 |
| XYZ | 更便于計(jì)算的色彩空間(常與RGB互相轉(zhuǎn)換) |
| Ycrcb | 加入了亮度的色彩空間 |
| HSV | 人眼感知的模型[色調(diào)[0~360],飽和度[0 ~1],亮度[0 ~1]] |
| HLS | 類型HSV[色調(diào)[0 ~360],亮度/明度[0 ~1],飽和度[0 ~1]] |
| CIEL*a*b | 均勻色彩空間模型 |
| CIEL*u*v | 適用于顯示器顯示和根據(jù)加色原理組合的場(chǎng)景 |
| Bayer | 用于CCD和CMOS相機(jī)中的顏色空間 |
| Bayer | 用于CCD和CMOS相機(jī)中的顏色空間 |
2:色彩空間類型轉(zhuǎn)換
| 參數(shù) | |
| src:輸入圖像 | |
| code:色彩空間轉(zhuǎn)碼【枚舉】 | |
| dstCn:被轉(zhuǎn)碼圖像通道數(shù) 默認(rèn)表示自動(dòng)獲取 | |
| 返回值:輸出轉(zhuǎn)碼圖像 | |
運(yùn)行結(jié)果:(可以看到不同的色彩空間效果不同)
(五)結(jié)束語(yǔ)
?? 以上就是今天所要分享的內(nèi)容了
?? 學(xué)習(xí)路漫漫,我們?nèi)孕柝?fù)重前行……
?? 為此博主新創(chuàng)建了一個(gè)群,期待你們的加入:
?? QQ群:928357277
歡迎加入我們的大家庭:928357277
總結(jié)
以上是生活随笔為你收集整理的openCV专栏(二):基础计算实战+色彩空间转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 人事小姐姐找我提需求:一键生成这个月的假
- 下一篇: wince搜狗地图_安卓百度地图winC