openCV3 - 2

创造一张图

  1. 长400,宽400,三通道图。色彩值(0,0,255),红色。
  2. 长400,宽400,单通道图。色彩值127,灰色。
import cv2 as cv
def create_image():
    img = np.zeros([400, 400, 3], np.uint8)
    img[:, :, 2] = np.ones([400, 400])*255
    cv.imshow("new image",img)

    img = np.zeros([400, 400, 1], np.uint8)
    img[:, :, 0] = np.ones([400, 400]) * 127
    cv.imshow("new image", img)
    

numpy的一些基础用法

import numpy as np
mt = np.ones([3, 3], np.uint8)
mt.fill(122.388)
print(mt)


"""
[[122 122 122]
 [122 122 122]
 [122 122 122]]
"""

通道分离与合并

  • cv.split()
  • cv.merge()
    合并单通道成为多通道,而不能多通道合并。
src = cv.imread("test.png")  # blue, green, red
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
# cv.imshow("input image", src)

b, g, r = cv.split(src)

cv.imshow("blue", b)
cv.imshow("green", g)
cv.imshow("red", r)

# 恢复原图
# src = cv.merge([r, g, b])

CPP

bool split3channels()
{
    vector<Mat> channels;
    Mat srcImage = imread("/Users/sxt/Downloads/17/mogu.jpg");
    split(srcImage, channels);
    Mat blueChannles = channels.at(0);
    Mat greenChannels = channels.at(1);
    Mat redChannels = channels.at(2);
}

结果全是单通道图片。
带颜色的是三通道图片,在split分离出的图像基础上,扩展另外两个通道(为0)。
如下:

# 生成一个值为0的单通道数组
zeros = np.zeros(image.shape[:2], dtype = "uint8")

# 分别扩展B、G、R成为三通道。另外两个通道用上面的值为0的数组填充
cv2.imshow("Blue", cv2.merge([B, zeros, zeros]))
cv2.imshow("Green", cv2.merge([zeros, G, zeros]))
cv2.imshow("Red", cv2.merge([zeros, zeros, R]))
cv2.waitKey(0)

src[:, :, 0] = 0
src[:, :, 1] = 0
cv.imshow("Red src", src)

Python运算时间

t1 = cv.getTickCount()
t2 = cv.getTickCount()
time = (t2 - t1) / cv.getTickFrequency()

生成灰度图并且写入

单通道

src = cv.imread("test.png")  # blue, green, red
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imwrite("result1.png", gray)
cv.waitKey(0)
cv.destroyAllWindows()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值