树莓派使用摄像头显示图像不全,图像畸形,以及分辨率设置问题

#最近在使用树莓派进行视觉检测时出现了众多的问题,显示的图像出现畸形,显示不全,显示的分辨率与自己设置的不相同等问题,在视觉检测推理中一直出现这种情况,感觉并不影响推理结果,但在最近发现应该是有些影响,才开始正视这些问题# 

1.图像畸形

   摄像头畸形一般是硬件问题,另一种就是代码问题,这个问题在这里只是讲一下我自己的问题是怎么解决的,大多数人在做项目时在网上找教程,代码也是和别人一样的,之前我仔细的看过代码,有畸形校对的代码,但是仍存在畸形的问题,这就让我不知道该怎么办,并且在运行其他代码时摄像头是没有任何问题的,这时就要想到一个问题,既然我的摄像头并没有什么问题,为什么还是增加校正的代码,所以不妨删掉这个代码试试。

2.图像显示不全

   在我使用摄像头时出现图像显示不全的问题,将摄像头捂住一般,发现窗口显示的图像并没有变化,只有右半部分的摄像头是显示的。

   首先便是检查是否是硬件问题,找到一个简单的实时拍摄的代码,同时找到另一个摄像头,两个摄像头,同样的代码,在树莓派与电脑上进行试验,发现同样的代码两个摄像头在电脑上拍摄都没有问题,但在树莓派上图像显示不全,首先排除硬件问题。(代码附下)

import numpy as np
import cv2

cap=cv2.VideoCapture(1)  #0代表树莓派上自带的摄像头,1代表USB摄像头

#一下cap.set(),可以注释掉#
cap.set(3,320)#摄像头采集图像的宽度320
cap.set(4,240)#摄像头采集图像的高度240
cap.set(5,30) #摄像头采集图像的帧率fps为30

#查看采集图像的参数
print(cap.get(3))
print(cap.get(4))
print(cap.get(5))

while(True):
	ret,color_frame=cap.read()
	img1=cv2.flip(color_frame,0)  #翻转图像,0垂直翻转,1水平翻转,-1水平垂直翻转
	cv2.imshow('color_frame',img1)  #展示每一帧
	if cv2.waitKey(1)&0xff==ord('q'): #按Q键退出,可以改成任意键
		break
cap.release()
cv2.destroyAllWindows()

   一开始以为是设置的参数的问题,宽和高改了但并没有用。

   之后在朋友的提示下转去研究是不是窗口的问题,发现还真是,也就是说在树莓派上使用摄像头和电脑上是不一样的,必须加一个对窗口的设置(代码附下)。

import cv2
#打开摄像头
cap = cv2.VideoCapture(0)
# 创建一个名为"Camera”的窗口CV2.WINDOW NORMAL)cv2.namedWindow("Camera"
# 设置窗口大小
cv2.namedWindow("Camera", cv2.WINDOW_NORMAL)
cv2.resizeWindow("Camera",640,480)# 
cap.set(3, 640)  # cap.set 摄像头参数设置
cap.set(4, 480)  # 3代表图像高度,4代表图像宽度,5代表图像帧率
cap.set(5, 40)  # 

print(cap.get(3))
print(cap.get(4))

while True :
    # 读取摄像头画面
    ret,frame = cap.read()
    # 显示画面
    cv2.imshow("Camera",frame)
    # 按下 q 键退出循环
    if cv2.waitKey(1)& 0xFF == ord('q'):
       break

   在设置宽和高时,在上面设置一下窗口的大小,不然就会出现图像显示不全的问题,并且尽量窗口和图片的宽和高相同。

3.分辨率设置

   解决了上面的问题后,在设分辨率时出现了问题,我最开始设的480*480但是发现输出的大小是640*480,最后又试了许多大小,发现树莓派的分辨率比例设置必须是三比二,并且在你设置的不是三比二是,树莓派会根据你设置的宽,根据三比二的比例,重新设置一个新的高出来,所以说如果想要你将分辨率设成正方形的话(比如我),就改一下吧,设置成三比二的比例吧。

   以上代码主要还是为了测试用的简单的代码,大家根据自己的项目以及代码实际的去进行修改。

   以上主要还是根据自己的实际情况,从而通过实验解决自己的问题,并得出的结论,如果大家对这几个问题有疑问或者有不同的见解,可以在评论区留言。

   如果觉得这些对自己有帮助的话,可以点个小小的赞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值