图片的总像素计算和像素点统计、像素选取和修改、感兴趣RIO区域提取

您所在的位置:网站首页 图像的像素尺寸 图片的总像素计算和像素点统计、像素选取和修改、感兴趣RIO区域提取

图片的总像素计算和像素点统计、像素选取和修改、感兴趣RIO区域提取

2023-07-28 02:05| 来源: 网络整理| 查看: 265

0.本文主要内容:

1.什么是像素

2.如何计算一张照片有多少像素

3.照片的像素点统计

4.照片的像素选取和修改

5.照片的感兴趣RIO区域提取

1.什么是像素

像素:是指在由一个数字序列表示的图像中的一个最小单位,称为像素。

2.如何计算一张照片有多少像素 (1)黑白照片

a.通过照片属性查看像素

其中位深度:8,即照片的类型为uint8

b.通过cv2查看像素 img = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',0) w,h=img.shape size=img.size print(f'总像素:{size}\n宽:{h},高:{w}')

 输出:

总像素:1049088 宽:1366,高:768

通过结果,总像素=宽度像素*高度像素。

(2)彩色照片

a.通过照片属性查看像素

其中位深度:24,即照片的类型为uint8,彩色照片为3通道,B、G、R三张照片的叠加。

 

b.通过cv2查看像素 img = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',1) w,h,channels=img.shape size=img.size print(f'总像素:{size}\n宽:{h},高:{w}')

 输出:

总像素:3147264 宽:1366,高:768

通过结果,总像素=宽度像素*高度像素*3。

原因是:彩色照片有3个通道,彩色照片的像素等于3个通道的像素之和。

 通过程序测试三个通道的像素:

img = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',1) img_b,img_g,img_r=cv2.split(img) print(f'img的像素:{img.size}') print(f'img_b的像素:{img_b.size}') print(f'img_g的像素:{img_g.size}') print(f'img_r的像素:{img_r.size}')

输出:

img的像素:3147264 img_b的像素:1049088 img_g的像素:1049088 img_r的像素:1049088 3.照片像素点统计

照片本质上是一个三维矩阵(h*w*channels)

参考照片:

照片的值如下:

[[[184 200 212] [176 192 204] [172 188 200] ... [129 158 165] [136 165 172] [138 167 174]] [[188 204 216] [183 199 211] [180 196 208] ... [142 171 178] [140 169 176] [133 162 169]] [[184 200 212] [181 197 209] [180 196 208] ... [136 165 172] [130 159 166] [121 150 157]] ... [[242 248 255] [233 239 246] [223 229 236] ... [ 20 34 32] [ 19 33 31] [ 22 36 34]] [[225 232 241] [222 229 238] [219 226 235] ... [ 14 28 26] [ 10 24 22] [ 11 25 23]] [[211 218 227] [217 224 233] [225 232 241] ... [ 20 34 32] [ 18 32 30] [ 21 35 33]]] (1)彩色照片像素点统计

测试代码:

import cv2 import numpy as np import matplotlib.pyplot as plt if __name__ == "__main__": # 读取彩色照片 img = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',1) cv2.imshow('img',img) b,g,r=cv2.split(img) h,w=b.shape array=np.zeros([256], dtype = np.int32) for img_p in [b,g,r]: for row in range(h): for col in range(w): pix_value=img_p[row,col] array[pix_value]+=1 plt.plot(array,'r') plt.show()

结果输出:

 (2)灰度照片像素点统计

测试代码:

import cv2 import numpy as np import matplotlib.pyplot as plt if __name__ == "__main__": # 读取灰度照片 img = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',0) cv2.imshow('img',img) h,w=img.shape array=np.zeros([256], dtype = np.int32) for row in range(h): for col in range(w): pix_value=img[row,col] array[pix_value]+=1 plt.plot(array,'r') plt.show()

结果输出:

(3)纯白照片像素点统计

测试代码:

import cv2 import numpy as np import matplotlib.pyplot as plt if __name__ == "__main__": # 纯白照片 img = np.zeros([400,400,3],np.uint8)+255 cv2.imshow('img',img) b,g,r=cv2.split(img) h,w=b.shape array=np.zeros([256], dtype = np.int32) for img_p in [b,g,r]: for row in range(h): for col in range(w): pix_value=img_p[row,col] array[pix_value]+=1 plt.plot(array,'r') plt.show()

结果输出:

 (4)纯黑照片像素点统计

测试代码:

import cv2 import numpy as np import matplotlib.pyplot as plt if __name__ == "__main__": # 纯白照片 img = np.zeros([400,400,3],np.uint8) cv2.imshow('img',img) b,g,r=cv2.split(img) h,w=b.shape array=np.zeros([256], dtype = np.int32) for img_p in [b,g,r]: for row in range(h): for col in range(w): pix_value=img_p[row,col] array[pix_value]+=1 plt.plot(array,'r') plt.show()

结果输出:

  (5)随机生成的照片像素点统计

测试代码:

import cv2 import numpy as np import matplotlib.pyplot as plt if __name__ == "__main__": # 纯白照片 img = np.random.randint(0,255,(400,400,3),dtype='uint8') cv2.imshow('img',img) b,g,r=cv2.split(img) h,w=b.shape array=np.zeros([256], dtype = np.int32) for img_p in [b,g,r]: for row in range(h): for col in range(w): pix_value=img_p[row,col] array[pix_value]+=1 plt.plot(array,'r') plt.show()

结果输出:

4.像素选取和修改 (1)彩色照片

照片是一组三维矩阵,而彩色照片channels为3,即第三维的长度为3

通过【h,w】获取出来的像素是3个通道的像素

a.单个像素选取

程序如下:

# 彩色照片 img =cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',1) pix_b,pix_g,pix_r=img[100,100] print(f'pix_b:{pix_b}\npix_g:{pix_g}\npix_r:{pix_r}')

输出:

pix_b:223 pix_g:233 pix_r:243 b.单个像素修改 img[100,100]=0 c.某些像素选取(ROI提取)

ROI(region of interest),感兴趣区域。

如下图:RIO区域为花

代码:

img =cv2.imread(r'C:\Users\Nobody\Desktop\img1.png',1) cv2.imshow('img',img) img_copy=img.copy() roi_img=img_copy[195:445,800:1100] cv2.imshow('roi_img', roi_img)

结果输出:

 d.某些像素修改

代码如下:

# 彩色照片 img = cv2.imread(r'C:\Users\Nobody\Desktop\img1.png', 1) img_copy = img.copy() roi_img = img_copy[195:445, 800:1100] img_copy[100:350,200:500]=roi_img cv2.imshow('new_img',img_copy)

输出:

 (2)灰度照片

照片是一组三维矩阵,而灰度照片channels为1,即第三维的长度为1

通过【h,w】获取出来的像素是1个通道的像素,参考彩色照片像素的选取和修改。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3