Python OpenCV 用滑动条做调色板

# -*- coding: utf-8 -*-

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:0FF\n1:0N‘
cv2.createTrackbar(switch, ‘image‘, 0, 1, nothing)

while True:
    cv2.imshow(‘image‘, img)
    k = cv2.waitKey(1) & 0xff
    if k == 27:
        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[:] = [b, g, r]

cv2.destroyAllWindows()

利用调色板的颜色绘制

# -*- coding: utf-8 -*-

import cv2
import numpy as np

#当鼠标按下时变为 True
drawing = False
#如果mode为True绘制矩形, 按下m变成绘制曲线
mode = True
ix, iy = -1, -1

def nothing(x):
    pass

#创建回调函数
def draw(event, x, y, flags, param):
    r = cv2.getTrackbarPos(‘R‘, ‘image‘)
    g = cv2.getTrackbarPos(‘G‘, ‘image‘)
    b = cv2.getTrackbarPos(‘B‘, ‘image‘)
    color = (b, g, r)

    global ix, iy, drawing, mode
    #当按下左键时返回起始点坐标
    if event == cv2.EVENT_LBUTTONDOWN:
        drawing = True
        ix, iy = x, y
    #当鼠标按下并移动时绘制图形,可以查看移动,flag是否按下
    elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON:
        if drawing == True:
            if mode == True:
                cv2.rectangle(img, (ix, iy), (x, y), color, -1)
            else:
                cv2.circle(img, (x, y), 3, color, -1)

    #当鼠标松开时停止绘画
    elif event == cv2.EVENT_LBUTTONUP:
        drawing = False

img = np.zeros((512, 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)
cv2.setMouseCallback(‘image‘, draw)
while True:
    cv2.imshow(‘image‘, img)
    k = cv2.waitKey(1) & 0xff
    if k == ord(‘m‘):
        mode = not mode
    elif k == 27:
        break

原文地址:https://www.cnblogs.com/wbyixx/p/9393824.html

时间: 2024-10-03 14:45:54

Python OpenCV 用滑动条做调色板的相关文章

python opencv:使用滑动条做调色板

cv2.getTrackbarPos() 函数的 一个参数是滑动条的名字, 第二个参数是滑动条被放置窗口的名字, 第三个参数是滑动条的默认位置. 第四个参数是滑动条的最大值, 第五个函数是回调函数,每次滑动条的滑动都会调用回调函数. 回调函数通常都会含有一个默认参数,就是滑动条的位置. 在本例中这个函数不用做任何事情,我们只需要 pass 就可以了 滑动条的另外一个重要应用就是用作转换按钮. 默认情况下 OpenCV 本身不带有按钮函数. 所以我们使用滑动条来代替. 在我们的程序中,我们要创建一

用滑动条做调色板

创建一个简单的程序:通过调节滑动条来设定画板颜色.我们要创建一个窗口来显示显色,还有三个滑动条来设置 B,G,R 的颜色.当我们滑动滚动条是窗口的颜色也会发生相应改变.默认情况下窗口的起始颜色为黑.cv2.getTrackbarPos() 函数的一个参数是滑动条的名字,第二个参数是滑动条被放置窗口的名字,第三个参数是滑动条的默认位置.第四个参数是滑动条的最大值,第五个函数是回调函数,每次滑动条的滑动都会调用回调函数.回调函数通常都会含有一个默认参数,就是滑动条的位置.在本例中这个函数不用做任何事

OPENCV中滑动条的使用

//文中存在两种不同的图像的平滑类型.一类是彩色图像,还有一类是灰度图像.经证明,两种均能够 #include<cv.h> #include<highgui.h> #include<cxcore.h> int param1=1; int param2=1; IplImage *img; IplImage *image; IplImage *dst; void switch_callback(int position) { int  m_param1=param1*2+1

OpenCV中通过滑动条阈值分割多通道图像

1.阈值分割 阈值分割法是一种基于区域的图像分割技术.其基本原理是:通过设定不同的特征阈值,把图像象素点分为若干类.根据图像阈值化算法所依据的信息源,可将阈值化方法分为五类:1) 基于聚类的方法:数据聚类中,总的数据集被划分为属性相似的子类,例如将灰度级聚类成为两部分:前景物体部分和背景部分.2) 基于直方图的方法:在直方图的峰.谷和直方图的圆滑曲线上进行分析.3) 基于熵的方法:熵方法将区域分为背景区域和前景区域,前景区域通常是物体部分(在一些热红外图像中,背景部分是物体) .该方法是通过最小

使用OpenCV滑动条写成的简单调色器,实时输出RGB值

好久没有写博客了,最近在看OpenCV,于是动手写了个简单的RGB调色器,在终端实时输出RGB的值.通过这个程序学习滑动条的使用.程序中主要用到cvCreateTrackbar ,其用法如下: cvCreateTrackbar 创建trackbar并将它添加到指定的窗口. CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); int cvCreateTrackbar( const char* trackbar_name, cons

opencv学习之路(5)、鼠标和滑动条操作

一.鼠标事件 1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 using namespace cv; 4 using namespace std; 5 6 Mat img(500,500,CV_8UC3,Scalar(255,255,255));//定义成全局变量 7 8 void OnMouse(int event,int x,int y,int flags,void* param){ 9 if(event==CV_EV

opencv学习之路(6)、鼠标截图,滑动条播放视频

一.鼠标截图 1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 using namespace cv; 4 using namespace std; 5 6 Mat img=imread("E://1.jpg"); 7 Mat temp=img.clone(); 8 Mat ROI; 9 Point pt; 10 bool flag=false; 11 12 void onMouse(int event,

滑动条 Trackbar[OpenCV 笔记9]

OpenCV中没有实现按钮的功能,我们可以利用滑动条来实现按钮功能. int createTrackerbar(const string& trackerbarname, const string winame, int* value, int count, TrackbarCallback onChange=0, void* userdata=0); trackbarname 轨迹条的名字. winname 窗口的名字,轨迹条会依附在这个窗口上. value 一个指向整型的指针,表示滑块的位置

python+opencv实现高斯平滑滤波

功能: 创建两个滑动条来分别控制高斯核的size和σ的大小,这个程序是在阈值分割的那个程序上改动的.阈值分割程序在这 注意:由于σ=0时,opencv会根据窗口大小计算出σ,所以,从0滑动σ的滑动条时,会出现先边清晰又变模糊的现象 python+opencv实现阈值分割 python+opencv实现霍夫变换检测直线 (2016-5-10)到OpenCV-Python Tutorials's documentation!可以下载 代码: # -*- coding: utf-8 -*- impor