zoukankan      html  css  js  c++  java
  • opencv对图片每个像素操作

    1.遍历图像对其每个像素取反

    import cv2 as cv
    import numpy as np
    
    img = cv.imread("d:/girl.jfif")
    cv.imshow("img", img)
    
    height = img.shape[0]
    width = img.shape[1]
    channels = img.shape[2]
    t1 = cv.getTickCount()
    for h in range(height):
        for w in range(width):
            for c in range(channels):
                img[h, w, c] = 255 - img[h, w, c]
    t2 = cv.getTickCount()
    t = (t2 - t1)/cv.getTickFrequency()*1000
    print("%f ms"%t)
    cv.imshow("img2", img)
    cv.waitKey(0)

    注意cv.getTickCount()的使用可以获得程序运行时间。

    t = (t2 - t1)/cv.getTickFrequency()*1000

    其中t的单位是毫秒

     顺便一提,可以使用cv.bitwise_not(image)来实现对图像取反,比上面的代码要快几千倍。事实上,还有bitwise_and, bitwise_or, bitwise_xor等位操作的函数

    2.构造一张蓝色的图

    '''
    构造一张蓝色的图
    '''
    import cv2 as cv
    import numpy as np
    
    img = np.zeros(shape=[400, 400, 3], dtype=np.uint8)
    img[:,:,0] = np.ones([400, 400])*255
    cv.imshow("img", img)
    cv.waitKey(0)

    三通道,bgr,所以只需要对第三维的索引0赋值。

    3.构造单通道灰度图

    '''
    构造一张灰色的图
    '''
    import cv2 as cv
    import numpy as np
    
    img = np.ones(shape=[400, 400, 1], dtype=np.uint8)
    height = img.shape[0]
    width = img.shape[1]
    channels = img.shape[2]
    for h in range(height):
        for w in range(width):
            for c in range(channels):
                img[h, w, c] = (h+w)%255
    cv.imshow("img", img)
    cv.waitKey(0)

    结果很漂亮惹,懒得截图了

  • 相关阅读:
    软件测试的术语及解释总结
    测试工具
    数据库客户端连接
    应用程序发生错误怎么修改
    软件测试容易忽略的缺陷
    LR中错误解决方法
    LR结果分析2
    LR结果分析
    Hive
    zookeeper
  • 原文地址:https://www.cnblogs.com/loubin/p/12271412.html
Copyright © 2011-2022 走看看