前言

ChatGPT最近挺火的,据说还能写程序,感到有些惊讶。于是在使用ChatGPT有一周左右后,分享一下用它写程序的效果如何。

1、对于矩阵,把减法操作转换加法?

感觉不错的,能清晰介绍原理,然后写示例程序,还给出了示例的运行结果。

2、写一个程序,矩阵除法转换为矩阵除法

上面是一个简答的例子,要求程序详细一些

当要求程序详细一些时,它会写得很详细些,这个不错的;

但是在解释原理时,公式显示乱码了,这点有待完善。

3、写一个程序,pytorch模型转onnx

对于特定领域的知识(ONNX模型转换),它也是知道的,能根据需求,写出示例程序。

4、写一个程序,遍历彩色图片

5、写一个程序,遍历三维数组

但是呢,上面的程序会报错:

ValueError: index 10016 is out of bounds for array with size 10000

6、写个程序,实现彩色图片灰度化,灰度值是每个通道的平均值

7、使用opencv检测图片的轮廓,拟合直线

import cv2
import numpy as np# 读取图像并转换为灰度图像
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 对图像进行二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 找到图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 对每个轮廓拟合多条直线
for cnt in contours:# 近似轮廓epsilon = 0.01 * cv2.arcLength(cnt, True)approx = cv2.approxPolyDP(cnt, epsilon, True)# 计算轮廓的凸包hull = cv2.convexHull(approx, returnPoints=False)# 如果轮廓点的数量不足 5 个,则不做拟合if len(approx) < 5:continue# 寻找轮廓的顶点defects = cv2.convexityDefects(approx, hull)vertices = []for i in range(defects.shape[0]):s, e, f, d = defects[i, 0]start = tuple(approx[s][0])end = tuple(approx[e][0])far = tuple(approx[f][0])vertices.append(far)# 对轮廓进行拟合lines = cv2.fitLine(np.array(vertices), cv2.DIST_L2, 0, 0.01, 0.01)# 绘制拟合直线x0, y0 = int(lines[2] - lines[0] * 100), int(lines[3] - lines[1] * 100)x1, y1 = int(lines[2] + lines[0] * 100), int(lines[3] + lines[1] * 100)cv2.line(img, (x0, y0), (x1, y1), (0, 255, 0), 2)cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np# 读取图片
img = cv2.imread('example.png')# 转为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化处理
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 查找轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 对轮廓点集合按照横坐标排序
contour_points = contours[0]
contour_points = contour_points[np.argsort(contour_points[:, :, 0])]# 分离轮廓点集合
mid_x = (contour_points[0][0][0] + contour_points[-1][0][0]) // 2
left_points = contour_points[0:mid_x, :, :]
right_points = contour_points[mid_x:, :, :]# 拟合左侧直线
left_vx, left_vy, left_x, left_y = cv2.fitLine(left_points, cv2.DIST_L2, 0, 0.01, 0.01)# 拟合右侧直线
right_vx, right_vy, right_x, right_y = cv2.fitLine(right_points, cv2.DIST_L2, 0, 0.01, 0.01)# 计算直线的截距和斜率
left_k = left_vy / left_vx
left_b = left_y[0][0] - left_k * left_x[0][0]
right_k = right_vy / right_vx
right_b = right_y[0][0] - right_k * right_x[0][0]# 画出拟合的直线
height, width, _ = img.shape
left_x0 = 0
left_y0 = int(left_k * left_x0 + left_b)
left_x1 = width
left_y1 = int(left_k * left_x1 + left_b)
right_x0 = 0
right_y0 = int(right_k * right_x0 + right_b)
right_x1 = width
right_y1 = int(right_k * right_x1 + right_b)
cv2.line(img, (left_x0, left_y0), (left_x1, left_y1
import cv2
import numpy as np# 读入图像
img = cv2.imread("example.jpg")# 灰度化和边缘检测
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize=3)# 获取轮廓
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 对每个轮廓进行拟合
for contour in contours:# 拟合直线[vx, vy, x, y] = cv2.fitLine(contour, cv2.DIST_L2, 0, 0.01, 0.01)slope = vy / vxy_intercept = y - slope * xx1 = 0y1 = int(x1 * slope + y_intercept)x2 = img.shape[1] - 1y2 = int(x2 * slope + y_intercept)cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)[vx, vy, x, y] = cv2.fitLine(contour, cv2.DIST_L2, 0, 0.01, 0.01)slope = vy / vxy_intercept = y - slope * xx1 = 0y1 = int(x1 * slope + y_intercept)x2 = img.shape[1] - 1y2 = int(x2 * slope + y_intercept)cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)# 显示结果
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np# 读入图片,转为灰度图
img = cv2.imread("image.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Canny 边缘检测
edges = cv2.Canny(gray, 50, 150)# 寻找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 画出轮廓
contour_img = np.zeros_like(img)
cv2.drawContours(contour_img, contours, -1, (0, 255, 0), 3)# 对每个轮廓拟合两条直线
line_img = np.zeros_like(img)
for cnt in contours:# 拟合第一条直线[vx, vy, x, y] = cv2.fitLine(cnt, cv2.DIST_L2, 0, 0.01, 0.01)lefty = int((-x * vy / vx) + y)righty = int(((img.shape[1] - x) * vy / vx) + y)cv2.line(line_img, (img.shape[1]-1, righty), (0, lefty), (255, 0, 0), 2)# 拟合第二条直线[vx, vy, x, y] = cv2.fitLine(cnt, cv2.DIST_L2, 0, 0.01, 0.01)lefty = int((-x * vy / vx) + y)righty = int(((img.shape[1] - x) * vy / vx) + y)cv2.line(line_img, (img.shape[1]-1, righty), (0, lefty), (0, 0, 255), 2)# 显示结果
cv2.imshow("Contour", contour_img)
cv2.imshow("Lines", line_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

同样的问题,实现的方式有多种;在编写程序需求时,明确一下思路,它写出来的代码会更符合我们所想的。

import cv2
import numpy as np# 读取图片并进行灰度化处理
img = cv2.imread('test.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 对灰度图像进行边缘检测,如使用 Canny 算法
edges = cv2.Canny(gray, 50, 150)# 找到所有轮廓,并选择一个想要拟合的轮廓
contours, hierarchy = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]# 对轮廓进行逼近,得到轮廓的拟合线段
epsilon = 0.1 * cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, epsilon, True)# 计算轮廓的重心坐标
M = cv2.moments(cnt)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])# 将轮廓点集合分为左右两部分
left_cnt = []
right_cnt = []
for i in range(len(cnt)):if cnt[i][0][0] < cx:left_cnt.append(cnt[i])else:right_cnt.append(cnt[i])left_cnt = np.array(left_cnt)
right_cnt = np.array(right_cnt)# 对左右两部分的点分别进行拟合直线
[vx_l, vy_l, x_l, y_l] = cv2.fitLine(left_cnt, cv2.DIST_L2, 0, 0.01, 0.01)
[vx_r, vy_r, x_r, y_r] = cv2.fitLine(right_cnt, cv2.DIST_L2, 0, 0.01, 0.01)# 得到拟合直线的参数,可以使用直线的一般式或截距式表示
k_l = vy_l / vx_l
b_l = y_l - k_l * x_l
k_r = vy_r / vx_r
b_r =

这个代码没写完,又被中断了;感觉写稍微长一些的代码,就容易出现中断的情况。

总体感受

  1. 对于简单的运算,感觉不错的,能清晰介绍原理,然后写示例程序,还给出了示例的运行结果。

  1. 在示例程序中,要求程序详细一些时,它会写得很详细些,这个不错的。

  1. 对于一些特定领域的知识,它也是知道的,能根据描述需求,写出示例程序。

  1. 有些复杂一些的运算,它写出的程序会报错;这个需要我们检测和修正。

  1. 写稍微长一些的代码,就容易出现中断的情况,代码还没写完呢。

  1. 总体感觉挺挺强的,适合我们去了解一个新的知识(原理和思路),然后参考它的示例程序。

ChatGPT写程序如何?相关推荐

  1. chatgpt写程序-python小游戏-2048-pygame

    闲的没事,用chatpgt弄了个小游戏,2048,利用pygame实现,无额外贴图. 只需要告诉他写个python游戏2048,只用pygame实现,不要额外贴图.然后在他暂停后说请继续,最后会有一些 ...

  2. 如何在 iOS、MacOS 上使用 ChatGPT 和适用于 iPhone 的最佳 ChatGPT 应用程序

    目录 什么是聊天 GPT? 如何在我的 iPhone 上使用 ChatGPT? 适用于 iPhone 的最佳 ChatGPT 应用程序 在过去的几周里,出现了许多 ChatGPT 应用程序和网站.如果 ...

  3. ChatGPT写的C++学习路线是怎样的

    ChatGPT写的C++学习路线是怎样的 图片版 文字版 请为我写一条C++全栈学习路线,有以下要求: 1.搜索了以下所有要求的相关资料后再做回答,注意逻辑 2.20000字以上,如果没有说完,自己继 ...

  4. 莫言用 ChatGPT 写颁奖辞;微软CEO反驳马斯克:我们没有控制OpenAI;SQLite 3.42.0 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  5. 用CPU大法忽悠ChatGPT写前端,油猴子工具库+1

    文章目录 用CPU大法忽悠ChatGPT写前端,油猴子工具库+1 源起 对话 1. 作为一名天才js程序员,开发一个油猴子脚本,实现所有浏览器网页的自动下滑功能,每一个步骤都加上中文注释 2. 加一个 ...

  6. ​反其道而行,大学教授鼓励学生用 ChatGPT 写论文

    来源 | AI科技大本营 出品 | CSDN(ID:CSDNnews) 新 AI 工具 ChatGPT 的到来,正在教育圈呈现出冰火两重天的态势,教授们几家欢喜几家愁. 这不近日,来自宾夕法尼亚大学沃 ...

  7. ChatGPT写python代码实录

    ChatGPT写python代码实录 print('hello world') 众所周知,咱们程序员学习编程是为了世界好. 所以,咱们就从hello world开始. 然后是一个杨辉三角 def ge ...

  8. 【真的?】用 ChatGPT 写一篇 Python 翻译库博客,可以打 9 分

    今天来个大的实践项目,用 ChatGPT 写一篇博客,冲击一下热榜! 从零开始玩 ChatGPT ⛳️ ChatGPT 亮点 ⛳️ 账号篇 ⛳️ 第一次使用 ⛳️ 用 Python 实现一个英汉互译的 ...

  9. chatgpt对程序员会造成什么影响

    16年阿尔法狗大战李世石的时候,全网也是刷屏AI,宣告程序员即将失业. 我的观点一向很明确:写程序将是世界上最后一个消失的工作. ChatGPT根本不会写程序,它只是在大量人类写的代码基础上进行了总结 ...

最新文章

  1. AI时代人类需要具备的九种软技能,你get了几个?
  2. 我们为什么要接受教育
  3. 第三方分享接口api
  4. mysql fulltext索引
  5. 杨幂掐点祝福唐嫣,打破不和传言,情感营销还能这么玩?
  6. Chrome浏览器切换到之前打开的标签页会重新加载
  7. 计算机应用能力文字录入,2017全国专业技术人员计算机应用能力考试题库-Excel,Word,XP.pdf...
  8. android标题栏消失,安卓标题栏为什么没有显示
  9. 阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结
  10. 浓郁东方民俗剪纸风新年春节海报,psd分层模板
  11. 微软苏州校招1月3日在线编程题2——Disk Storage
  12. Establish(扩展ACL)
  13. 医院绩效考核病案首页数据上报的难点及解决方案
  14. requests爬取美图妹子
  15. 求二叉树的深度 题目编号:376
  16. 单片机实验(十五)74LS47数码管译码
  17. html中td内容不换行显示,html小技巧之td,div标签里内容不换行
  18. DistributedDataParallel(DDP)Pytorch 分布式训练示例及注意事项
  19. Mstar 编译器的搭建
  20. 新生搜索神器Microsoft Academic Search与Google scholar、PubMed、wos、embase大PK!

热门文章

  1. 2023 4月份 华为硬件开发岗位实习生机考回忆
  2. php数值计算,PHP基础教程——PHP数值计算
  3. 静态路由配置与浮动路由配置
  4. 解决iphone4 4s的静音按键失灵故障
  5. Linux下python如何解压rar文件,RAR解压文件
  6. React项目中使用less总结
  7. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于JAVA的物流管理系统ztwfg
  8. 高校 招生迎新大数据分析系统解决方案(ppt)
  9. 【调剂】深圳大学大湾区国际创新学院2023年人工智能专业研究生预调剂信息
  10. PostgreSQL窗口函数