Lnton羚通视频算法算力云平台OpenCV-Python教程:图像基础操作
  bhI5HKfMRQFj 2023年11月02日 41 0

【像素访问】

所有的操作与 NumPy相关。熟悉 NumPy会写出更好的代码。

import numpy as np
import cv2

img = cv2.imread('messi5.jpg')

# 获取 y = 80, x = 180 位置处的像素值
px = img[80, 180]
print(px) # 77, 84, 180

# 设置 y = 80, x = 180 位置处的像素为白色
img[80, 180] = [255, 255, 255]

# 获取 y = 80, x = 200 位置处蓝色通道的值,通道顺序为 B(blue), G(green), R(red)
bluepx = img[80, 200, 0]
print(bluepx) # 96


cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

NumPy 是一个快速数组运算的优化库,简单的像素访问和修改可能会比较慢,所以是不推荐的。取几行或者取几列会很快,但是对于单个像素的访问,NumPy有 array.item()和array.itemset()会更好,它们总是会返回一个标量,但是如果想要访问所有的BGR的值,需要分别使用 array.item() 获得每个值。

# Better pixel accessing and editing method :
# 修改 y = 80, x = 160 位置处红色通道像素值为255
img.itemset((80, 160, 2), 255)

# 访问 y = 80, x = 160 位置处的各像素值
b = img.item(80, 160, 0)
g = img.item(80, 160, 1)
r = img.item(80, 160, 2)

cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

【图像属性】

import numpy as np
import cv2

img = cv2.imread('messi5.jpg')

print( img.shape )
print( img.size )
print( img.dtype )

【ROI】

import numpy as np
import cv2

img = cv2.imread('messi5.jpg')

# 通过 NumPy 的方式取得球位置的图像
# 并将取出来的ROI图像复制到图像其他位置
# cropped = img[start_row:end_row, start_col:end_col]
ball = img[280:340, 330:390]
img[273:333, 100:160] = ball

cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Lnton羚通视频算法算力云平台OpenCV-Python教程:图像基础操作_NumPy

【通道】

import numpy as np
import cv2

img = cv2.imread('messi5.jpg')

# 将图像的通道分离为 BGR 通道
b,g,r = cv2.split(img)

# 合并通道
img = cv2.merge((b,g,r))

# numpy的索引方式更快
img[:,:,2] = 0

cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

NOTE: cv2.split 是一个耗时的函数,只有在必须使用的时候才去用它,否则用 NumPy 的通道索引更好一些。

Lnton羚通视频算法算力云平台OpenCV-Python教程:图像基础操作_音视频_02

【扩边】

void cv::copyMakeBorder	(	InputArray 	src,
OutputArray 	dst,
int 	top,
int 	bottom,
int 	left,
int 	right,
int 	borderType,
const Scalar & 	value = Scalar() 
);

参数

src: 源图像

dst: 目标图像,类型与源图像相同,尺寸大小为(src.cols+left+right, src.rows+top+bottom)

top: 顶部像素数

bottom: 底部像素数

left: 左边像素数

right: 右边像素数

borderType: 扩边类型

value: 如果扩边类型为常数,则设置

Lnton 羚通专注于音视频算法、算力、云平台的高科技人工智能,基于视频分析技术、视频智能传输技术、远程监测技术以及智能语音融合技术等, 拥有多款可支持 ONVIF、RTSP、GB/T28181 等多协议、多路数的音视频智能分析服务器。

Lnton羚通视频算法算力云平台OpenCV-Python教程:图像基础操作_音视频_03

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wYiNgHyJ6FE6   2023年11月22日   30   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年12月09日   33   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月19日   38   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月19日   40   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月19日   32   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月19日   31   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月02日   50   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月20日   31   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月19日   37   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月02日   77   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年12月10日   33   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年11月19日   39   0   0 numpyNumPy
  wYiNgHyJ6FE6   2023年12月08日   30   0   0 numpyNumPy
bhI5HKfMRQFj