栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Opencv-Python快速入门笔记(二)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Opencv-Python快速入门笔记(二)

 1.图像像素算术操作

创建与原图片大小一致的图片,add/subtract/multiply/divide

import cv2 as cv
import numpy as np

def math_demo():
   image = cv.imread("D:/opencv_image/touxiang.jpg")
   cv.imshow("input",image)
   h,w,c = image.shape
   blank = np.zeros_like(image)#创建一个和image一样大的空白图片
   blank[:,:] = (80,80,80)
   result = cv.subtract(image,blank)#改变了图像亮度
   cv.imshow("result",result)
   cv.waitKey(0)
   cv.destroyAllWindows()

if __name__ == "__main__":
    math_demo()
2. Trackbar滚动条操作

没有代码补全提示真的很容易拼错,所以去找了下怎么打开

import cv2 as cv
import numpy as np

def nothing(x):
    print(x)

def adjust_lightness_demo():
   image = cv.imread("D:/opencv_image/touxiang.jpg")
   cv.namedWindow("input",cv.WINDOW_AUTOSIZE)
   cv.createTrackbar("lightness","input",0,100,nothing)#最后那个是回调函数
   cv.imshow("input",image)
   blank = np.zeros_like(image)
   while 1:
       pos = cv.getTrackbarPos("lightness","input")
       blank[:,:] = (pos,pos,pos)
       result = cv.add(image,blank)
       cv.imshow("result",result)
       c = cv.waitKey(1)
       if c == 27:
           break
   cv.destroyAllWindows()

if __name__ == "__main__":
    adjust_lightness_demo()
 3.参数传递与调整亮度和对比度
import cv2 as cv
import numpy as np

def nothing(x):
    print(x)

def adjust_contrast_demo():
    image = cv.imread("D:/opencv_image/touxiang.jpg")
    cv.namedWindow("input",cv.WINDOW_AUTOSIZE)
    cv.createTrackbar("lightness","input",0,100,nothing)
    cv.createTrackbar("contrast","input",100,200,nothing)
    cv.imshow("input",image)
    blank = np.zeros_like(image)
    while 1:
        light = cv.getTrackbarPos("lightness","input")
        contrast = cv.getTrackbarPos("contrast","input")/100
        print("light:",light,"contrast",contrast)
        result = cv.addWeighted(image,contrast,blank,0.5,light)
        cv.imshow("result",result)
        c = cv.waitKey(1)
        if c == 27:
            break;
    cv.destroyAllWindows()

if __name__ == "__main__":
    adjust_contrast_demo()
4.键盘响应操作
import cv2 as cv
import numpy as np

def keys_demo():
    image = cv.imread("D:/opencv_image/touxiang.jpg")  # 这里换了一张图片
    cv.namedWindow("input",cv.WINDOW_AUTOSIZE)
    cv.imshow("input", image)
    #cv.waitKey接受一个按键事件并返回按键的ASCII码
    while True:
        c = cv.waitKey(1)
        if c == 49: #1
            gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
            cv.imshow("result",gray)
        if c == 50: #2
            hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV)
            cv.imshow("result",hsv)
        if c == 51: #3
            invert = cv.bitwise_not(image)#对二进制数据进行“非”操作
            cv.imshow("result",invert)
        if c == 27:
            break
    cv.destroyAllWindows()#关闭所有由imshow产生的窗口


if __name__ == "__main__":
    keys_demo()
5.Opencv自带颜色表操作
import cv2 as cv
import numpy as np

#applyColorMap()函数进行图片彩色变换
def color_table_demo():
    #opencv颜色表
    colormap = [
        cv.COLORMAP_AUTUMN,
        cv.COLORMAP_BONE,
        cv.COLORMAP_JET,
        cv.COLORMAP_WINTER,
        cv.COLORMAP_RAINBOW,
        cv.COLORMAP_OCEAN,
        cv.COLORMAP_SUMMER,
        cv.COLORMAP_SPRING,
        cv.COLORMAP_COOL,
        cv.COLORMAP_PINK,
        cv.COLORMAP_HOT,
        cv.COLORMAP_PARULA,
        cv.COLORMAP_MAGMA,
        cv.COLORMAP_INFERNO,
        cv.COLORMAP_PLASMA,
    ]
    image = cv.imread("D:/opencv_image/touxiang.jpg")
    cv.namedWindow("input",cv.WINDOW_AUTOSIZE)
    cv.imshow("input",image)
    index = 0
    while True:
        dst = cv.applyColorMap(image,colormap[index%15])
        index += 1
        cv.imshow("color style",dst)
        c = cv.waitKey(400)
        if c == 49:#按1停止
            break;
    cv.destroyAllWindows()

if __name__ == "__main__":
    color_table_demo()

运行结果:每隔一小段时间实现一次颜色变换

 6.图像像素的逻辑操作

即与或非的操作,必须对两张大小和通道数完全相同的图像这样操作才合法

import cv2 as cv
import numpy as np

#applyColorMap()函数进行图片彩色变换
def bitwise_demo():
    b1 = np.zeros((400,400,3),dtype=np.uint8)
    b1[:,:] = (255,0,255)
    b2 = np.zeros((400,400,3),dtype=np.uint8)
    b2[:,:] = (0,255,0)
    cv.imshow("b1",b1)
    cv.imshow("b2",b2)

    dst1 = cv.bitwise_and(b1,b2)
    dst2 = cv.bitwise_or(b1,b2)
    cv.imshow("bitwise_and",dst1)
    cv.imshow("bitwise_or",dst2)
    cv.waitKey(0)
    cv.destroyAllWindows()

if __name__ == "__main__":
    bitwise_demo()

 运行结果:

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580838.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号