买来的便宜板子的红蓝模式是 红青。。。手头又没有红青眼镜。
本着能动手绝不伸手的原则(其实买个眼镜也就10几块钱。)自己搞之。
摄像头显示左右分割
一直觉得左右分割会有个 split 类似的函数,找了很久也没找到。。。
结果发现,就是这么简单,惊喜不惊喜。。。。
import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): ret, frame = cap.read() frame_new = frame[0:400,0:400] frame_2 = frame[400:800,0:400] cv2.imshow("capture",frame_new) cv2.imshow("capture2",frame_2) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
最终的代码
实现的原理,就是合并两个摄像头的红,蓝部分,并去掉绿色部分。
摄像头像素太渣,看不出效果。
import cv2 import numpy as np import usb.core import usb.backend.libusb1 cap = cv2.VideoCapture(1) backend = usb.backend.libusb1.get_backend(find_library=lambda x: "/usr/lib/libusb-1.0.so") # dev = usb.core.find(idVendor=0x18e3, idProduct=0x5031, backend=backend) dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x50,0xff]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0xf6]) dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x25,0x00]) dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x5f,0xfe]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x03]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x02]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x12]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x04]) dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x76,0xc3]) dev.ctrl_transfer(0x21,0x01,0x0a00,0x0600,[4,0x00]) while(1): ret, frame = cap.read() frame = cv2.resize(frame, (1280, 480), interpolation=cv2.INTER_CUBIC) frame_new = frame[0:480,0:640] b, g, r = cv2.split(frame_new) frame_2 = frame[0:480,640:1280] b2, g2, r2 = cv2.split(frame_2) zeros = np.zeros(frame_2.shape[:2], dtype = "uint8") merged = cv2.merge([b,zeros,r2]) cv2.imshow("br",merged) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
绿色通道去掉有点问题