python如何用色度表示数值大小_在Windows中使用脚本更改色度二次采样设置(YCbCr 4:4:4转换为RGB,反之亦然)(Python)...

本文介绍了一个Python脚本,该脚本用于在Windows操作系统中修改显示设置,特别是涉及色度表示,如将YCbCr 4:4:4格式转换为RGB。脚本涉及到Windows注册表操作,通过Tkinter、ctypes、win32api等库来实现设置的更改。
摘要由CSDN通过智能技术生成

from Tkinter import *

import tkFont

import time

import ctypes

import serial

import _winreg

import win32gui

import win32con

import win32api

import wmi

def get_reg(name, reg_path):

registry_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, reg_path, 0, _winreg.KEY_READ)

value, regtype = _winreg.QueryValueEx(registry_key, name)

_winreg.CloseKey(registry_key)

return value

def set_reg(name, value, reg_path):

registry_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, reg_path, 0, _winreg.KEY_WRITE)

_winreg.SetValueEx(registry_key, name, 0, _winreg.REG_DWORD, value)

_winreg.CloseKey(registry_key)

def set_reg_bin(name, value, reg_path):

registry_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, reg_path, 0, _winreg.KEY_WRITE)

_winreg.SetValueEx(registry_key, name, 0, _winreg.REG_BINARY, value)

_winreg.CloseKey(registry_key)

def reg_enum(reg_path):

registry_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, reg_path, 0, _winreg.KEY_READ)

lastkey=_winreg.EnumKey(registry_key, _winreg.QueryInfoKey(registry_key)[0]-1)

firstkey=_winreg.EnumKey(registry_key, 0)

print lastkey

print firstkey

return lastkey

def deleteSubkey(key0, key1, key2=""):

if key2=="":

currentkey = key1

else:

currentkey = key1+ "\\" +key2

open_key = _winreg.OpenKey(key0, currentkey ,0,_winreg.KEY_ALL_ACCESS)

infokey = _winreg.QueryInfoKey(open_key)

for x in range(0, infokey[0]):

subkey = _winreg.EnumKey(open_key, 0)

try:

_winreg.DeleteKey(open_key, subkey)

print "Removed %s\\%s " % ( currentkey, subkey)

except:

deleteSubkey( key0, currentkey, subkey )

_winreg.DeleteKey(open_key,"")

open_key.Close()

print "Removed %s" % (currentkey)

return

if __name__ =="__main__":

DESKTOP_ID = "{########-####-####-####-############}"

LAPTOP_ID = "{########-####-####-####-############}"

REG_PATH_SCRID = r"SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration"

deleteSubkey(_winreg.HKEY_LOCAL_MACHINE, REG_PATH_SCRID)

try:

input = raw_input('In Windows Display settings, under "Multiple displays", choose "Show only on 2", then press ENTER to continue.')

except NameError:

pass

win32api.ChangeDisplaySettings(None, 0)

ColorRGB = chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x0A)+chr(0x01)+chr(0x08)+chr(0x00)

Color422 = chr(0x01)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x0A)+chr(0x01)+chr(0x08)+chr(0x00)

Color444 = chr(0x02)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x0A)+chr(0x01)+chr(0x08)+chr(0x00)

Color420 = chr(0x03)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x0A)+chr(0x01)+chr(0x08)+chr(0x00)

ColorRGB_DriverExtra = chr(0x60)+chr(0xEA)+chr(0x00)+chr(0x00)+chr(0xE8)+chr(0x03)+chr(0x00)+chr(0x00)+chr(0x15)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x04)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x06)+chr(0x00)+chr(0x00)+chr(0x00)

Color444_DriverExtra = chr(0x60)+chr(0xEA)+chr(0x00)+chr(0x00)+chr(0xE8)+chr(0x03)+chr(0x00)+chr(0x00)+chr(0x15)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x04)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x06)+chr(0x00)+chr(0x00)+chr(0x00)

Color422_DriverExtra = chr(0x60)+chr(0xEA)+chr(0x00)+chr(0x00)+chr(0xE8)+chr(0x03)+chr(0x00)+chr(0x00)+chr(0x15)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x04)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x06)+chr(0x00)+chr(0x00)+chr(0x00)

Color422_DriverExtra = chr(0x60)+chr(0xEA)+chr(0x00)+chr(0x00)+chr(0xE8)+chr(0x03)+chr(0x00)+chr(0x00)+chr(0x15)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x04)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x00)+chr(0x06)+chr(0x00)+chr(0x00)+chr(0x00)

SCREEN_ID = reg_enum(REG_PATH_SCRID)

print SCREEN_ID

SCREEN_ID_SHORT = SCREEN_ID.partition("^")[0]

print SCREEN_ID_SHORT

REG_PATH = r"SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo\CONTROL\VIDEO"+"\\"+LAPTOP_ID+r"\0000"

REG_PATH2 = r"SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo\CONTROL\VIDEO"+"\\"+LAPTOP_ID+r"\0001"

REG_PATH3 = r"SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration"+"\\"+SCREEN_ID+r"\00\00"

REG_PATH4 = r"SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration"+"\\"+SCREEN_ID+r"\00"

REG_PATH5 = r"SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration"+"\\"+SCREEN_ID

REG_PATH_COLOR = r"SYSTEM\CurrentControlSet\Services\nvlddmkm\DisplayDatabase"+"\\"+SCREEN_ID_SHORT

set_reg('DefaultSettings.XResolution', 3840, REG_PATH)

set_reg('DefaultSettings.YResolution', 2160, REG_PATH)

set_reg_bin('DefaultSettings.DriverExtra', ColorRGB_DriverExtra, REG_PATH)

set_reg('DefaultSettings.VRefresh', 60, REG_PATH)

set_reg_bin('ColorformatConfig', ColorRGB, REG_PATH_COLOR)

set_reg('Attach.ToDesktop', 1, REG_PATH)

set_reg('VSyncFreq.Numerator', 60000, REG_PATH3)

set_reg('VSyncFreq.Denominator', 1000, REG_PATH3)

set_reg('PrimSurfSize.cx', 3840, REG_PATH3)

set_reg('PrimSurfSize.cy', 2160, REG_PATH3)

set_reg('DwmClipBox.left', 0, REG_PATH3)

set_reg('DwmClipBox.top', 0, REG_PATH3)

set_reg('DwmClipBox.right', 3840, REG_PATH3)

set_reg('DwmClipBox.bottom', 2160, REG_PATH3)

set_reg('PrimSurfSize.cx', 3840, REG_PATH4)

set_reg('PrimSurfSize.cy', 2160, REG_PATH4)

win32api.ChangeDisplaySettings(None, 0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值