当前位置:   article > 正文

【opencv 笔记 4】杂记_opencv transpose( 2, 0, 1)

opencv transpose( 2, 0, 1)

目录

1

cv2.imwrite()    中文乱码问题

cv2.puttext()  能在图片上打印汉字吗

2

灰度世界(白平衡)

plt画图

BGR彩图的统计直方图

线段


1

cv2.imwrite()    中文乱码问题

你一定尝试过了:

1 更改setting 选项             2 # -*- coding: utf-8 -*-        3 .encode( )   .......            的方案了吧,然后,没好使。。。

cv2.imwrite(filename, img)

print 出 filename 明明是正常的中文,可是输出的文件名却乱码?

            

前方高能,终于找到解决方法,开森

  1. #cv2.imwrite(filename, img) 改为下句
  2. cv2.imencode('.jpg', img)[1].tofile(filename)

哦吼完美!

下面再来解决读取中文路径:

img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)

cv2.puttext()  能在图片上打印汉字吗

cv2.puttext 是不可以的。

  1. r1= ['黑', 'A', '0', 'S', 'K', '0', '5']
  2. r2= ['黑', 'A', '0', 'S', 'K', '0', '5']
  3. r3= ['黑', 'A', '0', 'S', 'K', '0', '5']
  1. img=cv2.resize(img,(410,90))
  2. imgh, imgw, _ = img.shape
  3. back = 255*np.ones((2*imgh, imgw, 3), np.uint8)
  4. back[0:imgh, 0:imgw ] = img
  5. img_PIL = Image.fromarray(cv2.cvtColor(back, cv2.COLOR_BGR2RGB))
  6. draw = ImageDraw.Draw(img_PIL)
  7. for i in range(len(r0)):
  8. draw.text((80+40*i, 115), ''.join(r0[i]), (0, 70, 255), ImageFont.truetype("simhei.ttf", 22, encoding="utf-8"))
  9. for i in range(len(r1)):
  10. draw.text((80+40*i, 135), ''.join(r1[i]), (0, 70, 255), ImageFont.truetype("simhei.ttf", 22, encoding="utf-8"))
  11. for i in range(len(r2)):
  12. draw.text((80+40*i, 155), ''.join(r2[i]),(0, 70, 255), ImageFont.truetype("simhei.ttf", 22, encoding="utf-8"))
  13. for i in range(len(res)):
  14. draw.text((80+40*i, 95), ''.join(res[i]), (0, 0, 0), ImageFont.truetype("simhei.ttf", 22, encoding="utf-8"))
  15. back = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)
  16. cv2.imencode('.jpg', back)[1].tofile("./k/"+''.join(res)+"_{}.jpg".format(index))
  17. index+=1
  18. cv2.imshow("T",back)

                                                 

2

灰度世界(白平衡)

  1. def grey_world(nimg):
  2. nimg = nimg.transpose(2, 0, 1).astype(np.uint32)
  3. avgB = np.average(nimg[0])
  4. avgG = np.average(nimg[1])
  5. avgR = np.average(nimg[2])
  6. avg = (avgB + avgG + avgR) / 3
  7. nimg[0] = np.minimum(nimg[0] * (avg / avgB), 255)
  8. nimg[1] = np.minimum(nimg[1] * (avg / avgG), 255)
  9. nimg[2] = np.minimum(nimg[2] * (avg / avgR), 255)
  10. return nimg.transpose(1, 2, 0).astype(np.uint8)
'
运行

plt画图

BGR彩图的统计直方图

  1. '''
  2. 绘制BGR彩图的统计直方图
  3. '''
  4. from matplotlib import pyplot as plt
  5. import numpy as np
  6. import cv2
  7. import os
  8. path = "pp"
  9. cc = 0
  10. for root, dirs, files in os.walk(path):
  11. for file in files:
  12. if file[-5] is 's':
  13. continue
  14. # 读入图片
  15. img = cv2.imdecode(np.fromfile(path + "/" + file, dtype=np.uint8), cv2.IMREAD_COLOR)
  16. if img is None:
  17. print("图片读入失败, 请检查图片路径及文件名")
  18. exit()
  19. # 创建画布
  20. fig, ax = plt.subplots()
  21. # Matplotlib预设的颜色字符
  22. bgrColor = ('b', 'g', 'r')
  23. # 统计窗口间隔 , 设置小了锯齿状较为明显 最小为1 最好可以被256整除
  24. bin_win = 16
  25. # 设定统计窗口bins的总数
  26. bin_num = int(256 / bin_win)
  27. for cidx, color in enumerate(bgrColor):
  28. # cidx channel 序号
  29. # color r / g / b
  30. cHist = cv2.calcHist([img], [cidx], None, [bin_num], [0, 256])
  31. # 绘制折线图
  32. ax.plot(cHist, color=color)
  33. #绘制线段
  34. # 控制画布的窗口x坐标的稀疏程度. 最密集就设定xticks_win=1
  35. xticks_win = 4
  36. # 设定画布的范围
  37. ax.set_xlim([0, bin_num])
  38. # 设定x轴方向标注的位置
  39. ax.set_xticks(np.arange(0, bin_num, xticks_win))
  40. # 设定x轴方向标注的内容
  41. ax.set_xticklabels(list(range(0, 256, bin_win * xticks_win)), rotation=45)
  42. # 显示画面
  43. plt.show()
  44. #plt.savefig("p2/" + file[:-4] + "s.jpg")
  45. #cv2.imwrite("p2/" + file,img)

线段

  1. x=[0,255]
  2. y=[30,30]
  3. ax.plot(x,y, color=color)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/823846
推荐阅读
相关标签
  

闽ICP备14008679号