opencv 拍照变色,屏幕旋转导致的opencv 拍照变色

屏幕旋转导致的openccv取图变色.
这两天发现我的摄像头拍出来偏绿色. 绿绿的,跟鬼一样. 后来查了下手册.
是下面的这个参数要设置一下, 默认值好像是50…
重新设置一下, 改成1就可以了.

import cv2
capture = cv2.VideoCapture(0) #打开本地摄像头 
capture.set(cv2.CAP_PROP_HUE, 1)#色调

后来, 客户买了个竖屏. 发现屏幕横着的时候是正常的, 改成竖着的时候就变成了偏红色, 感觉像是进了红灯区.

查了一上午. 最后排查发现, 原来是代码中关于宽度和高度的设置一定要正确合理. 否则,会出现色差.

下面的代码是错误的代码.

import cv2
from tkinter import *


win = Tk()
win.title("垃圾分类智能识别系统")
screenwidth = win.winfo_screenwidth() 
screenheight = win.winfo_screenheight()

minw = min(screenheight,screenwidth)


capture = cv2.VideoCapture(0) #打开本地摄像头 
capture.set(cv2.CAP_PROP_HUE, 1)#色调
capture.set(cv2.CAP_PROP_FRAME_WIDTH,  screenwidth )# 
capture.set(cv2.CAP_PROP_FRAME_HEIGHT,  screenheight )#  

如上所书,这个宽高虽然是灵活了,但是并不正确. 所以这里的数值会因为竖屏而出现bug. 这里关键的概念是, 摄像头的宽高是特殊数值, 不是可以随意填的.

下面是正常的代码.

import cv2
capture = cv2.VideoCapture(0) #打开本地摄像头 
capture.set(cv2.CAP_PROP_HUE, 1)#色调
capture.set(cv2.CAP_PROP_FRAME_WIDTH,  1920)#高度的数值 1920 必须是写死的数值, 否则可能会因为屏幕的改变而出现问题
capture.set(cv2.CAP_PROP_FRAME_HEIGHT,  1080)#宽度的数值 1080 必须是写死的数值, 否则可能会因为屏幕的改变而出现问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值