opencv读取、保存图像、截图、判断是否为cv图类型、图像水平与垂直拼接、三通道、

读取

import cv2
def cv_show(neme,img):
    # cv2.namedWindow(neme, cv2.WINDOW_NORMAL)
    cv2.imshow(neme, img)    
    cv2.waitKey(0)           
    cv2.destroyAllWindows()  
def cv_show(neme,img):
    # 调整宽高(再次运行也只会加载你调整后的宽高)
    # cv2.namedWindow(neme, cv2.WINDOW_NORMAL)
    cv2.imshow(neme, img)    # 必要参数:名字和变量名
    cv2.waitKey(0)           # 括号中0=任意键终止,单位为毫秒级别
    cv2.destroyAllWindows()  # 关闭所有窗口--图片
    
# cv2读取图像是BGR  不是RGB
image = cv2.imread("./8.jpg")
cv_show("name", image)

# 直接转黑白图,不建议这样做
image = cv2.imread("./8.jpg", 0)

中文路径 无法读取图像

import numpy as np
import cv2

def cv_show(neme, img):
    # cv2.namedWindow(neme, cv2.WINDOW_NORMAL)
    cv2.imshow(neme, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

img_file = "./images/test/db/刘亦菲.jpg"

# 读取图片
# img = cv2.imread(img_file)
# 解决中文路径问题
img = cv2.imdecode(np.fromfile(img_file, dtype=np.uint8), -1)
cv_show('neme', img)

生成一张纯黑图

img = np.zeros([300, 300, 3])

保存 可使用.jpg、.png

cv2.imwrite('1.png',image)

图像基本属性

print(img.shape)  # 高、宽、维度
print(img.size)   # 像素个数
print(img.dtype)  # 类型:例如:uint8

指定左上、右下、截图

# 截图 y1 y2 x1 x2
ball = img[0:100, 0:400]
cv_show("n", ball)

判断是否OpenCV图片类型

if (isinstance(img, np.ndarray)):  # 判断是否OpenCV图片类型

全屏截图

import PIL.ImageGrab
scr = PIL.ImageGrab.grab()
scr.save("scr.png")

自定义大小截图

import pyautogui
import cv2
import numpy as np

img = pyautogui.screenshot(region=[0,0, 1920, 1080])  # 分别代表:左上角坐标,宽高
#对获取的图片转换成二维矩阵形式,后再将RGB转成BGR
#因为imshow,默认通道顺序是BGR,而pyautogui默认是RGB所以要转换一下,不然会有点问题
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)

cv2.imshow("截屏", img)
cv2.waitKey(0)

# pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/
# pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/

图像水平、垂直拼接
注意:图像大致需要一致

# 可多张拼接
img = cv2.hconcat([image1, image2, image3])  # 水平拼接
img = cv2.vconcat([image1, image2])  # 垂直拼接

三通道

# 只保留单通道 3原色
# 将3种的两个置0 剩下的就是单通道啦
cur_img = img.copy()  # 想保留哪个通道,就注释掉哪个
cur_img[:, :, 0] = 0  # 0蓝B
cur_img[:, :, 1] = 0  # 1绿G
cur_img[:, :, 2] = 0  # 2红R
cv_show("n", cur_img)

下面的程序将会加载一个灰度图,显示图片,按下’s’键保存后退出,或者
按下 ESC 键退出不保存。

import cv2

img = cv2.imread('./8.jpg',0)
cv2.imshow('image',img)

k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默执_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值