Python OpenCv学习基础知识三
  TEZNKK3IfmPf 2023年11月15日 23 0

Python OpenCv学习基础知识三

一、一个案例

这个案例是使用cv2来做一个调色板:

"""
使用滑动条做一个调色板
"""

"""
使用工具Python3.5
使用库numpy;cv2
使用函数cv2.getTrackbarPos();cv2.creatTrackbar()

1.通过调节滑动条来设定画板颜色。
1.1窗口显示颜色,三个滑动条来设置RGB的颜色
1.2当滑动滑动条时,窗口颜色实时发生改变,默认窗口为黑色。
1.3cv2.getTrackbarPos()参数详情:
1.3.1滑动条的名字
1.3.2滑动条被放置窗口的名字
1.3.3滑动条默认的位置
1.3.4滑动条最大的值
1.3.5回调函数,每次滑动都会调用回调函数,回调函数通常都会含有一个默认参数,就是滑动条的位置。
1.4滑动条的另一个应用就是用作转换按钮,默认OpenCV是不带有按钮函数的,这里以滑动条代替,需要先创建一个转换按钮,只有当转换按钮指向ON时滑动条才有用。
"""

import cv2

import numpy as np

def nothing(x):
    pass

#创建一个黑色图像
img = np.zeros((300,512,3),np.uint8)
cv2.namedWindow('image')


cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
# RGB的颜色显示模式。

switch = '0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)


while(1):
    # 1就是True

    cv2.imshow('image',img)
    # 展示

    k=cv2.waitKey(1)
    if k == ord('q'):#按q键退出
        break

    r = cv2.getTrackbarPos('B','image')
    g = cv2.getTrackbarPos('G', 'image')
    b = cv2.getTrackbarPos('R', 'image')
    # 确实似乎显得不对应,但是这样一来,在图片面的颜色的显示是完全正确的了呢,所以还是要变成这个样子的呢。

    s = cv2.getTrackbarPos(switch, 'image')

    if s == 0:
        img[:]=0
    else:
        img[:]=[r,g,b]
    # 是否显示颜色。

cv2.destroyAllWindows()
# 销毁


"""

不得不说,这个调色板还是很厉害的呢。



import cv2
import numpy as np
def nothing(x):
    pass

#创建一个黑色图像
img = np.zeros((300,512,3),np.uint8)
cv2.namedWindow('image')

cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)

switch = '0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)

while(1):
    cv2.imshow('image',img)
    k=cv2.waitKey(1)
    if k == ord('q'):#按q键退出
        break

    r = cv2.getTrackbarPos('R','image')
    g = cv2.getTrackbarPos('G', 'image')
    b = cv2.getTrackbarPos('B', 'image')
    s = cv2.getTrackbarPos(switch, 'image')

    if s == 0:
        img[:]=0
    else:
        img[:]=[r,g,b]
cv2.destroyAllWindows()
"""



"""
import cv2
import numpy as np
def nothing(x):
    pass

#创建一个黑色图像
img = np.zeros((300,512,3),np.uint8)
cv2.namedWindow('image')

cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)

switch = '0:OFF\n1:ON'
cv2.createTrackbar(switch,'image',0,1,nothing)

while(1):
    cv2.imshow('image',img)
    k=cv2.waitKey(1)
    if k == ord('q'):#按q键退出
        break

    r = cv2.getTrackbarPos('R','image')
    g = cv2.getTrackbarPos('G', 'image')
    b = cv2.getTrackbarPos('B', 'image')
    s = cv2.getTrackbarPos(switch, 'image')

    if s == 0:
        img[:]=0
    else:
        img[:]=[r,g,b]
cv2.destroyAllWindows()
"""

二、图像基本操作一

"""
OpenCV图像的基本操作
"""

import numpy as np
import cv2

"""
OpenCV图像的基本操作一1

1

1


1

1


1
获取并且修改像素
"""


"""
直接获取的方法
"""
img = cv2.imread('E:\\\\1\\\\Documents\\\\PyTorch\\\\pytorch_learning\\\\others\\\\opencv_cv_2\\\\test1.jpg')
# 仍然注意是绝对的路径
# 注意是绝对的路径。


px=img[100,100]
print(px)
# 读取颜色(RGB)
blue = img[100,100,0]
print(blue)
# 读取第一个RGB的数值

img[101,101]=[255,255,255]
print(img[101,101])
# 进行赋值以后,会直接有一个所赋给的数值。

"""
使用numpy的方法
"""
img = cv2.imread('E:\\\\1\\\\Documents\\\\PyTorch\\\\pytorch_learning\\\\others\\\\opencv_cv_2\\\\test1.jpg')
# 绝对路径。

print(img.item(10,10,2))
# 读取颜色信息。

img.itemset((10,10,2),100)
print(img.item(10,10,2))
# 使用numpy的方法来进行读取颜色的相关的信息。

三、图像基本操作二

"""
OpenCV图像的基本操作
"""

import numpy as np
import cv2


"""
OpenCV图像的基本操作二2

2


2


2

2

2

获取图像属性
"""

img = cv2.imread('E:\\\\1\\\\Documents\\\\PyTorch\\\\pytorch_learning\\\\others\\\\opencv_cv_2\\\\test1.jpg')
# 绝对的路径

# 1、shape

print(img.shape)
# img.shape可以获得图像的形状,返回值是一个包含行数,列数,通道数的元组

# 2、size


print(img.size)
# img.size可以返回图像的像素数目

# 3、dtype

print(img.dtype)
# img.dtype返回图像的数据类型,在debug时很重要,因为OpenCV-Python代码中经常出现数据类型的不一致

# 
# (866, 650, 3)
# 1688700
# uint8
# 

#

四、总结

以上就是Python OpenCv学习基础知识三的相关内容,后续还会继续推出相关的内容的,最后,谢谢大家的阅读与支持,喜欢的话就点个赞吧。

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

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

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   32   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   25   0   0 python
  TEZNKK3IfmPf   2024年05月31日   25   0   0 python
TEZNKK3IfmPf