当前位置:   article > 正文

python opencv中文显示cv2 imshow()窗口中文标题乱码解决办法 python win32gui按装_cv2.imshow中文乱码

cv2.imshow中文乱码

pip按装win32gui

pip install pywin32

使用Windows API函数修改窗口标题 

  1. ###########################################################################
  2. import cv2
  3. import numpy as np
  4. # 安装pillow : pip install pillow
  5. # 使用Pillow包绘制中文文本.
  6. from PIL import ImageFont, ImageDraw, Image
  7. # 纯白背景
  8. img = np.full((500, 600, 3), fill_value=255, dtype=np.uint8)
  9. # 导入字体文件
  10. font = ImageFont.truetype('./msyh.ttc', 35)
  11. # 创建一个pillow的图片
  12. img_pil = Image.fromarray(img)
  13. # 绘制pillow图片
  14. draw = ImageDraw.Draw(img_pil)
  15. # 利用draw去绘制中文
  16. draw.text((100, 250), '人生苦短,我用Python', font=font, fill=(0, 255, 0))
  17. # 重新变回ndarray
  18. img = np.array(img_pil)
  19. ##########################################################################3
  20. ############################################################################
  21. import win32gui
  22. # import win32con
  23. def cv_set_titile(oldTitle,newTitle='中文',oneRun=False):
  24. """
  25. 设置窗口标题
  26. :param oldTitle: 旧标题
  27. :param newTitle: 新标题
  28. :param oneRun: 是否只运行一次
  29. :return:
  30. """
  31. if oneRun == False:
  32. # 根据窗口名称查找其句柄 然后使用函数修改其标题
  33. # 尽量选择一个不常见的英文名 防止误该已有#的窗口标题 初始化时通常取无意义的名字 比如这里取‘aa’
  34. handle = win32gui.FindWindow(0, oldTitle)
  35. win32gui.SetWindowText(handle, newTitle)
  36. oneRun= True
  37. return oneRun
  38. cv2.imshow("aaa", img) #事先随便取一个英文名字 aaa, 后面我们便通过aa名称能找到该窗口句柄 尽量选择一个不常见的英文名 防止误改已有的窗口标题 取无意义的名字即可
  39. cv_set_titile("aaa", newTitle='欢迎使用本系统')
  40. cv2.waitKey(0)
  41. cv2.destroyAllWindows()
  42. ############################################################################
  43. ###########################################################################
  44. # #读入图片
  45. # #image = cv2.imread(r"D:\Project\Monet_traffic\data\photo\3.jpg")
  46. # #编码格式转换
  47. # def zh_ch(string):
  48. # return string.encode("gbk").decode('UTF-8', errors='ignore')
  49. # cv2.namedWindow(winname=zh_ch('图片'))
  50. # cv2.imshow(zh_ch('图片'), img)
  51. # # namedWindow和imshow窗口名采用gbk编码,而Python3默认UTF-8编码,所以将中文转成gbk编码的格式。但是大部分中文都不能转换,无法显示
  52. # # 改用Python 2版本,代码改为 cv.imshow(u'绘图', img),字符串前加u
  53. # cv2.waitKey(0)
  54. # cv2.destroyAllWindows()
  55. ###########################################################################
  56. ###########################################################################
  57. # #img = cv2.imread("gfg_logo.png")
  58. # # showing the image
  59. # cv2.imshow('gfg', img)
  60. # # Setting the windows title to "Hello!"
  61. # # using setWindowTitle method
  62. # cv2.setWindowTitle('gfg', 'hello')
  63. # # waiting using waitKey method
  64. # cv2.waitKey(0)
  65. ############################################################################
  66. ###########################################################################
  67. # import cv2
  68. # import numpy as np
  69. # #创建一个黑色的图像
  70. # img=np.zeros((512,680,3),np.uint8)
  71. # #定义字体文件路径
  72. # font_path='C:\Windows\Fonts\STFANGSO.TTF'
  73. # #加载中文字体
  74. # font = cv2.FONT_HERSHEY_SIMPLEX
  75. # # #绘制中文字体,在img上的(10,300)坐标处添加文本“世界你好”,字体为font,4像素大小,颜色为白色,粗细为10px
  76. # cv2.putText(img,"hello", (200,300), font, 4, (255,255,255), 10)
  77. # #显示图像
  78. # cv2.imshow('Image', img)
  79. # cv2.waitKey(0)
  80. # cv2.destroyAllWindows()
  81. ############################################################################
  82. # cv2.FONT_HERSHEY_SIMPLEX - 正常大小无衬线字体。
  83. # cv2.FONT_HERSHEY_PLAIN - 小号无衬线字体。
  84. # cv2.FONT_HERSHEY_DUPLEX - 正常大小无衬线字体比 cv2.FONT_HERSHEY_SIMPLEX 更复杂)
  85. # cv2.FONT_HERSHEY_COMPLEX - 正常大小有衬线字体。
  86. # cv2.FONT_HERSHEY_TRIPLEX - 正常大小有衬线字体 ( 比 cv2.FONT_HERSHEY_COMPLEX更复杂)
  87. # cv2.FONT_HERSHEY_COMPLEX_SMALL - cv2.FONT_HERSHEY_COMPLEX 的小译本。
  88. # cv2.FONT_HERSHEY_SCRIPT_SIMPLEX - 手写风格字体。
  89. # cv2.FONT_HERSHEY_SCRIPT_COMPLEX - 比 cv2.FONT_HERSHEY_SCRIPT_SIMPLEX 更复杂

中文转gbk

  1. ###########################################################################
  2. import cv2
  3. import numpy as np
  4. # 安装pillow : pip install pillow
  5. # 使用Pillow包绘制中文文本.
  6. from PIL import ImageFont, ImageDraw, Image
  7. # 纯白背景
  8. img = np.full((500, 600, 3), fill_value=255, dtype=np.uint8)
  9. # 导入字体文件
  10. font = ImageFont.truetype('./msyh.ttc', 35)
  11. # 创建一个pillow的图片
  12. img_pil = Image.fromarray(img)
  13. # 绘制pillow图片
  14. draw = ImageDraw.Draw(img_pil)
  15. # 利用draw去绘制中文
  16. draw.text((100, 250), '人生苦短,我用Python', font=font, fill=(0, 255, 0))
  17. # 重新变回ndarray
  18. img = np.array(img_pil)
  19. ##########################################################################3
  20. ###########################################################################
  21. #读入图片
  22. #image = cv2.imread(r"D:\Project\Monet_traffic\data\photo\3.jpg")
  23. #编码格式转换
  24. def zh_ch(string):
  25. return string.encode("gbk").decode('UTF-8', errors='ignore')
  26. cv2.namedWindow(winname=zh_ch('图片'))
  27. cv2.imshow(zh_ch('图片'), img)
  28. # namedWindow和imshow窗口名采用gbk编码,而Python3默认UTF-8编码,所以将中文转成gbk编码的格式。但是大部分中文都不能转换,无法显示
  29. # 改用Python 2版本,代码改为 cv.imshow(u'绘图', img),字符串前加u
  30. cv2.waitKey(0)
  31. cv2.destroyAllWindows()
  32. ###########################################################################
  33. ############################################################################
  34. # import win32gui
  35. # # import win32con
  36. # def cv_set_titile(oldTitle,newTitle='中文',oneRun=False):
  37. # """
  38. # 设置窗口标题
  39. # :param oldTitle: 旧标题
  40. # :param newTitle: 新标题
  41. # :param oneRun: 是否只运行一次
  42. # :return:
  43. # """
  44. # if oneRun == False:
  45. # # 根据窗口名称查找其句柄 然后使用函数修改其标题
  46. # # 尽量选择一个不常见的英文名 防止误该已有#的窗口标题 初始化时通常取无意义的名字 比如这里取‘aa’
  47. # handle = win32gui.FindWindow(0, oldTitle)
  48. # win32gui.SetWindowText(handle, newTitle)
  49. # oneRun= True
  50. # return oneRun
  51. # cv2.imshow("aaa", img) #事先随便取一个英文名字 aaa, 后面我们便通过aa名称能找到该窗口句柄 尽量选择一个不常见的英文名 防止误改已有的窗口标题 取无意义的名字即可
  52. # cv_set_titile("aaa", newTitle='欢迎使用本系统')
  53. # cv2.waitKey(0)
  54. # cv2.destroyAllWindows()
  55. ############################################################################
  56. ###########################################################################
  57. # #img = cv2.imread("gfg_logo.png")
  58. # # showing the image
  59. # cv2.imshow('gfg', img)
  60. # # Setting the windows title to "Hello!"
  61. # # using setWindowTitle method
  62. # cv2.setWindowTitle('gfg', 'hello')
  63. # # waiting using waitKey method
  64. # cv2.waitKey(0)
  65. ############################################################################
  66. ###########################################################################
  67. # import cv2
  68. # import numpy as np
  69. # #创建一个黑色的图像
  70. # img=np.zeros((512,680,3),np.uint8)
  71. # #定义字体文件路径
  72. # font_path='C:\Windows\Fonts\STFANGSO.TTF'
  73. # #加载中文字体
  74. # font = cv2.FONT_HERSHEY_SIMPLEX
  75. # # #绘制中文字体,在img上的(10,300)坐标处添加文本“世界你好”,字体为font,4像素大小,颜色为白色,粗细为10px
  76. # cv2.putText(img,"hello", (200,300), font, 4, (255,255,255), 10)
  77. # #显示图像
  78. # cv2.imshow('Image', img)
  79. # cv2.waitKey(0)
  80. # cv2.destroyAllWindows()
  81. ############################################################################
  82. # cv2.FONT_HERSHEY_SIMPLEX - 正常大小无衬线字体。
  83. # cv2.FONT_HERSHEY_PLAIN - 小号无衬线字体。
  84. # cv2.FONT_HERSHEY_DUPLEX - 正常大小无衬线字体比 cv2.FONT_HERSHEY_SIMPLEX 更复杂)
  85. # cv2.FONT_HERSHEY_COMPLEX - 正常大小有衬线字体。
  86. # cv2.FONT_HERSHEY_TRIPLEX - 正常大小有衬线字体 ( 比 cv2.FONT_HERSHEY_COMPLEX更复杂)
  87. # cv2.FONT_HERSHEY_COMPLEX_SMALL - cv2.FONT_HERSHEY_COMPLEX 的小译本。
  88. # cv2.FONT_HERSHEY_SCRIPT_SIMPLEX - 手写风格字体。
  89. # cv2.FONT_HERSHEY_SCRIPT_COMPLEX - 比 cv2.FONT_HERSHEY_SCRIPT_SIMPLEX 更复杂

 使用 setWindowTitle() 方法将 Windows 标题从默认名称更改为 自已想要的名称

  1. ###########################################################################
  2. import cv2
  3. import numpy as np
  4. # 安装pillow : pip install pillow
  5. # 使用Pillow包绘制中文文本.
  6. from PIL import ImageFont, ImageDraw, Image
  7. # 纯白背景
  8. img = np.full((500, 600, 3), fill_value=255, dtype=np.uint8)
  9. # 导入字体文件
  10. font = ImageFont.truetype('./msyh.ttc', 35)
  11. # 创建一个pillow的图片
  12. img_pil = Image.fromarray(img)
  13. # 绘制pillow图片
  14. draw = ImageDraw.Draw(img_pil)
  15. # 利用draw去绘制中文
  16. draw.text((100, 250), '人生苦短,我用Python', font=font, fill=(0, 255, 0))
  17. # 重新变回ndarray
  18. img = np.array(img_pil)
  19. ##########################################################################3
  20. ###########################################################################
  21. #img = cv2.imread("gfg_logo.png")
  22. # showing the image
  23. cv2.imshow('gfg', img)
  24. # Setting the windows title to "Hello!"
  25. # using setWindowTitle method
  26. cv2.setWindowTitle('gfg', 'hello')
  27. # waiting using waitKey method
  28. cv2.waitKey(0)
  29. ############################################################################
  30. ###########################################################################
  31. # #读入图片
  32. # #image = cv2.imread(r"D:\Project\Monet_traffic\data\photo\3.jpg")
  33. # #编码格式转换
  34. # def zh_ch(string):
  35. # return string.encode("gbk").decode('UTF-8', errors='ignore')
  36. # cv2.namedWindow(winname=zh_ch('图片'))
  37. # cv2.imshow(zh_ch('图片'), img)
  38. # # namedWindow和imshow窗口名采用gbk编码,而Python3默认UTF-8编码,所以将中文转成gbk编码的格式。但是大部分中文都不能转换,无法显示
  39. # # 改用Python 2版本,代码改为 cv.imshow(u'绘图', img),字符串前加u
  40. # cv2.waitKey(0)
  41. # cv2.destroyAllWindows()
  42. ###########################################################################
  43. ############################################################################
  44. # import win32gui
  45. # # import win32con
  46. # def cv_set_titile(oldTitle,newTitle='中文',oneRun=False):
  47. # """
  48. # 设置窗口标题
  49. # :param oldTitle: 旧标题
  50. # :param newTitle: 新标题
  51. # :param oneRun: 是否只运行一次
  52. # :return:
  53. # """
  54. # if oneRun == False:
  55. # # 根据窗口名称查找其句柄 然后使用函数修改其标题
  56. # # 尽量选择一个不常见的英文名 防止误该已有#的窗口标题 初始化时通常取无意义的名字 比如这里取‘aa’
  57. # handle = win32gui.FindWindow(0, oldTitle)
  58. # win32gui.SetWindowText(handle, newTitle)
  59. # oneRun= True
  60. # return oneRun
  61. # cv2.imshow("aaa", img) #事先随便取一个英文名字 aaa, 后面我们便通过aa名称能找到该窗口句柄 尽量选择一个不常见的英文名 防止误改已有的窗口标题 取无意义的名字即可
  62. # cv_set_titile("aaa", newTitle='欢迎使用本系统')
  63. # cv2.waitKey(0)
  64. # cv2.destroyAllWindows()
  65. ############################################################################
  66. ###########################################################################
  67. # import cv2
  68. # import numpy as np
  69. # #创建一个黑色的图像
  70. # img=np.zeros((512,680,3),np.uint8)
  71. # #定义字体文件路径
  72. # font_path='C:\Windows\Fonts\STFANGSO.TTF'
  73. # #加载中文字体
  74. # font = cv2.FONT_HERSHEY_SIMPLEX
  75. # # #绘制中文字体,在img上的(10,300)坐标处添加文本“世界你好”,字体为font,4像素大小,颜色为白色,粗细为10px
  76. # cv2.putText(img,"hello", (200,300), font, 4, (255,255,255), 10)
  77. # #显示图像
  78. # cv2.imshow('Image', img)
  79. # cv2.waitKey(0)
  80. # cv2.destroyAllWindows()
  81. ############################################################################
  82. # cv2.FONT_HERSHEY_SIMPLEX - 正常大小无衬线字体。
  83. # cv2.FONT_HERSHEY_PLAIN - 小号无衬线字体。
  84. # cv2.FONT_HERSHEY_DUPLEX - 正常大小无衬线字体比 cv2.FONT_HERSHEY_SIMPLEX 更复杂)
  85. # cv2.FONT_HERSHEY_COMPLEX - 正常大小有衬线字体。
  86. # cv2.FONT_HERSHEY_TRIPLEX - 正常大小有衬线字体 ( 比 cv2.FONT_HERSHEY_COMPLEX更复杂)
  87. # cv2.FONT_HERSHEY_COMPLEX_SMALL - cv2.FONT_HERSHEY_COMPLEX 的小译本。
  88. # cv2.FONT_HERSHEY_SCRIPT_SIMPLEX - 手写风格字体。
  89. # cv2.FONT_HERSHEY_SCRIPT_COMPLEX - 比 cv2.FONT_HERSHEY_SCRIPT_SIMPLEX 更复杂

 加载字体方法  可能是很多字体不支持

  1. ###########################################################################
  2. # import cv2
  3. # import numpy as np
  4. # # 安装pillow : pip install pillow
  5. # # 使用Pillow包绘制中文文本.
  6. # from PIL import ImageFont, ImageDraw, Image
  7. # # 纯白背景
  8. # img = np.full((500, 600, 3), fill_value=255, dtype=np.uint8)
  9. # # 导入字体文件
  10. # font = ImageFont.truetype('./msyh.ttc', 35)
  11. # # 创建一个pillow的图片
  12. # img_pil = Image.fromarray(img)
  13. # # 绘制pillow图片
  14. # draw = ImageDraw.Draw(img_pil)
  15. # # 利用draw去绘制中文
  16. # draw.text((100, 250), '人生苦短,我用Python', font=font, fill=(0, 255, 0))
  17. # # 重新变回ndarray
  18. # img = np.array(img_pil)
  19. ##########################################################################3
  20. ###########################################################################
  21. import cv2
  22. import numpy as np
  23. #创建一个黑色的图像
  24. img=np.zeros((512,680,3),np.uint8)
  25. #定义字体文件路径
  26. font_path='C:\Windows\Fonts\STFANGSO.TTF'
  27. #加载中文字体
  28. font = cv2.FONT_HERSHEY_SIMPLEX
  29. # #绘制中文字体,在img上的(10,300)坐标处添加文本“hello”,字体为font,4像素大小,颜色为白色,粗细为10px
  30. cv2.putText(img,"hello", (200,300), font, 4, (255,255,255), 10)
  31. #显示图像
  32. cv2.imshow('Image', img)
  33. cv2.waitKey(0)
  34. cv2.destroyAllWindows()
  35. ############################################################################
  36. ###########################################################################
  37. # #img = cv2.imread("gfg_logo.png")
  38. # # showing the image
  39. # cv2.imshow('gfg', img)
  40. # # Setting the windows title to "Hello!"
  41. # # using setWindowTitle method
  42. # cv2.setWindowTitle('gfg', 'hello')
  43. # # waiting using waitKey method
  44. # cv2.waitKey(0)
  45. ############################################################################
  46. ###########################################################################
  47. # #读入图片
  48. # #image = cv2.imread(r"D:\Project\Monet_traffic\data\photo\3.jpg")
  49. # #编码格式转换
  50. # def zh_ch(string):
  51. # return string.encode("gbk").decode('UTF-8', errors='ignore')
  52. # cv2.namedWindow(winname=zh_ch('图片'))
  53. # cv2.imshow(zh_ch('图片'), img)
  54. # # namedWindow和imshow窗口名采用gbk编码,而Python3默认UTF-8编码,所以将中文转成gbk编码的格式。但是大部分中文都不能转换,无法显示
  55. # # 改用Python 2版本,代码改为 cv.imshow(u'绘图', img),字符串前加u
  56. # cv2.waitKey(0)
  57. # cv2.destroyAllWindows()
  58. ###########################################################################
  59. ############################################################################
  60. # import win32gui
  61. # # import win32con
  62. # def cv_set_titile(oldTitle,newTitle='中文',oneRun=False):
  63. # """
  64. # 设置窗口标题
  65. # :param oldTitle: 旧标题
  66. # :param newTitle: 新标题
  67. # :param oneRun: 是否只运行一次
  68. # :return:
  69. # """
  70. # if oneRun == False:
  71. # # 根据窗口名称查找其句柄 然后使用函数修改其标题
  72. # # 尽量选择一个不常见的英文名 防止误该已有#的窗口标题 初始化时通常取无意义的名字 比如这里取‘aa’
  73. # handle = win32gui.FindWindow(0, oldTitle)
  74. # win32gui.SetWindowText(handle, newTitle)
  75. # oneRun= True
  76. # return oneRun
  77. # cv2.imshow("aaa", img) #事先随便取一个英文名字 aaa, 后面我们便通过aa名称能找到该窗口句柄 尽量选择一个不常见的英文名 防止误改已有的窗口标题 取无意义的名字即可
  78. # cv_set_titile("aaa", newTitle='欢迎使用本系统')
  79. # cv2.waitKey(0)
  80. # cv2.destroyAllWindows()
  81. ############################################################################
  82. # cv2.FONT_HERSHEY_SIMPLEX - 正常大小无衬线字体。
  83. # cv2.FONT_HERSHEY_PLAIN - 小号无衬线字体。
  84. # cv2.FONT_HERSHEY_DUPLEX - 正常大小无衬线字体比 cv2.FONT_HERSHEY_SIMPLEX 更复杂)
  85. # cv2.FONT_HERSHEY_COMPLEX - 正常大小有衬线字体。
  86. # cv2.FONT_HERSHEY_TRIPLEX - 正常大小有衬线字体 ( 比 cv2.FONT_HERSHEY_COMPLEX更复杂)
  87. # cv2.FONT_HERSHEY_COMPLEX_SMALL - cv2.FONT_HERSHEY_COMPLEX 的小译本。
  88. # cv2.FONT_HERSHEY_SCRIPT_SIMPLEX - 手写风格字体。
  89. # cv2.FONT_HERSHEY_SCRIPT_COMPLEX - 比 cv2.FONT_HERSHEY_SCRIPT_SIMPLEX 更复杂

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

闽ICP备14008679号