今天ChatGPT-4的新闻爆了,大家都听说了GPT-4多么的厉害,如果之前的ChatGPT是一个小学生, 那现在就是一个优秀的大学生,再加上博览群书,过目不忘。你说能力恐怖不恐怖。
尤其还擅长写程序,画个草图,一分钟生成你想要的网站。几分钟写一个小游戏。
但是,一本正经的胡说八道的问题仍然在。
这个家伙不仅仅会写程序,还会调程序,你把错误代码贴进去,就给你调好。
chatGPT就已经很牛了,比如昨天我就试了一下。
对于一个对OpenCV 只听过名字的来说,这个题目恐怕有点难。完了ChatGPT立马给了答案。
给出代码:
import cv2
import numpy as np
# 车牌检测
def detect_plate(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cascade = cv2.CascadeClassifier('haarcascade_russian_plate_number.xml')
plates = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(50, 20))
if len(plates) == 0:
return None
else:
# 取最大的车牌区域
max_area = 0
max_plate = None
for (x, y, w, h) in plates:
if w * h > max_area:
max_area = w * h
max_plate = img[y:y + h, x:x + w]
return max_plate
# 字符分割
def segment_chars(plate):
gray = cv2.cvtColor(plate, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (3, 3), 0)
thresh = cv2.adaptiveThreshold(blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
# 垂直方向投影
hist = np.sum(thresh, axis=0)
chars = []
char_start = 0
char_end = 0
for i in range(len(hist)):
if hist[i] > 0 and char_start == 0:
char_start = i
elif hist[i] == 0 and char_start != 0 and char_end == 0:
char_end = i
if char_end - char_start > 10:
chars.append((char_start, char_end))
char_start = 0
char_end = 0
if char_start != 0 and char_end == 0:
chars.append((char_start, len(hist)))
return chars
# 车牌识别
cap = cv2.VideoCapture('video.avi')
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
plate = detect_plate(frame)
if plate is not None:
chars = segment_chars(plate)
for i, char in enumerate(chars):
cv2.rectangle(plate, (char[0], 0), (char[1], plate.shape[0]), (0, 255, 0), 2)
cv2.imshow('plate', plate)
cv2.waitKey(0)
cap.release()
cv2.destroyAllWindows()
运行,遇到问题,就问这位程序员。
看都看不懂啊,重点是不需要你懂啊。
按提示进行,成功运行。
这么一长段,我们是在做什么,我们是在调试和测试。
测试写出来的东西,是不是你需要的,并反馈给我们这位程序员。
ChatGPT-4 ,相信,只要你提的出来,他就写的出来。
而写出来的是什么,需要测试来确认,且如何测试,如何考虑的全面,如何避免一些特殊情况,将需要你来提出来,并告诉他。
我们不再害怕修不好Bug, 而害怕提不出问题。
完,大家有条件的都玩一玩,确实好玩。也是一个学习的利器。
当然,其他也重要,提出让他写什么的产品,当然也很重要了。
更重要的,如何和这些天才程序员沟通,学习下prompt很有必要了。