我将输出连续存储在CSV文件中。我能够读取此数据并使用下面的代码触发照明更改。照明的过渡是突然的,但理想情况下,我想仅使用RPi3和neopixels / ws2812b以非线性的方式尝试从一种颜色平滑过渡到另一种颜色。
powershell returnStatus: true, script: "\$env:WORKSPACE\\ci\\scripts\\publish-$(BRANCH).ps1"
我发现可以使用平稳步长函数,但是不确定如何实际使用它。
例如,如果使用以下功能,如何使RGB值跟随一条曲线,该曲线的初始颜色为0,而过渡颜色为1?这是可行的方法吗?
df = pd.read_csv("output.csv")
second_last = df['modes'].iloc[-2]
last = df['modes'].iloc[-1]
if second_last == last and last == "one" :
pixels.fill((255,0,0))
if second_last == last and last == "two" :
pixels.fill((0,255,0))
if second_last == last and last == "three" :
pixels.fill((0,0,255))
答案 0 :(得分:1)
免责声明:我是图像/视频专家,还没有使用Raspberry Pi进行照明。我想现在,您的照明从全红到全绿再到全蓝,变化非常突然。我描述了一种使该更改更加渐进的方法,但它可能效率不高,并且可能存在针对该平台的更简单方法。
您需要定义一个过渡时间(例如 t )。另外,您应该了解颜色是由pixel.fill((255,0,0))给出的。这三个值(255,0,0)表示(R,G,B)*。如果需要中间颜色,则需要将它们组合使用。因此,例如,如果要从红色过渡到蓝色,则需要一系列中间值的序列。线性地,这可能类似于:
import cv2
import yaml
import numpy as np
img = cv2.imread('test1.jpg')
image = cv2.resize(img, None, fx=0.6, fy=0.6)
file_path = 'parking_spots.yml'
refPt = []
data = []
def yaml_loader(file_path):
//contents of function
def yaml_dump(file_path, data):
//contents of function
def click_and_crop(event, x, y, flags, param):
//contents of function
def main():
cropping = False
clone = image.copy()
cv2.namedWindow("Click to mark points")
cv2.imshow("Click to mark points", image)
cv2.setMouseCallback("Click to mark points", click_and_crop)
while True:
cv2.imshow("Click to mark points", image)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# data list into yaml file
if data != []:
yaml_dump(file_path, data)
cv2.destroyAllWindows()
hi = "done"
return hi
if __name__ == "__main__":
# stuff only to run when not called via 'import' here
main()
然后是将RGBtriplet馈送到pixel.fill()的问题。或者,您可以使用函数:
from app import app, db
from flask import Flask, request, render_template, session
import datasets
app.secret_key = app.config['SECRET_KEY']
@app.route('/')
@app.route('/index')
def index():
//Contents of index()
@app.route('/info/<lot_id>')
def info(lot_id):
//Contents of info()
@app.route('/test')
def test():
return datasets.main()
if __name__ == '__main__':
app.run(host='0.0.0.0', port='8000', debug=True)
这应该为您提供非线性的颜色过渡,其中蓝色从0到255,红色从255到0(红色到蓝色)。
*或者可能是(B,G,R)。