图像主题色 代码 --code, Windows
来源:互联网 发布:数据库设计与关系理论 编辑:程序博客网 时间:2024/06/13 20:41
图像主题色提取算法——code
本文主要任务: run code
- 配置: Windows, anoconda python 2.7
- 源码 https://github.com/rainyear/ImageColorTheme
- run code : 直接运行 test.py 文件 , 主函数如下:
if __name__ == '__main__': # testColorSpace() # testMMCQ() # kmvs() print(testKmeans([getPixData()], 7, False)) print(testKmeans([getPixData()], 7))
- 运行源test.py chuxian错误:
- 无法 import cv2 模块
- 解决办法:Windows 上安装 opencv 最简单的办法就是, 从opencv 官网下载源码,解压后将cv2.pyd 文件复制到python的 site-packages 目录下. 类似于下图所示:
2. error : SyntaxError: Non-ASCII character '\xe5'in file ict\MMCQ.py on line 36, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
- 解决办法:在相应文件的第一行加入 # -*- coding: utf-8 -*-
- 原因是:(1). Python默认是以ASCII作为编码方式的,需要在文件开头设置一下编码. (2). 可能是因为我在代码中加入了中文注释,所以出现编码问题.
# -*- coding: UTF-8 -*- 或者 #coding=utf-8
3. error: from queue import PriorityQueue as PQueue ImportError: No module named queue
- 解决办法: 将代码修改,如下图所示
- 原因: Queue 在 multiprocessing module 中
- 源代码与修改后代码对比, 如下图 源代码
修改后
4. error: time 有关问题
- 解决办法: 将文件test.py 里的 testMMCQ(pixDatas, maxColor), testOQ(pixDatas, maxColor), testKmeans(pixDatas, maxColor, skl=True), 三个函数里的 start = time.process_time() , print("MMCQ Time cost: {0}".format(time.process_time() - start)) 两句话修改如下:
def testMMCQ(pixDatas, maxColor): #start = time.process_time() start = time.time() themes = list(map(lambda d: MMCQ(d, maxColor).quantize(), pixDatas)) #print("MMCQ Time cost: {0}".format(time.process_time() - start)) print("MMCQ Time cost: {0}".format(time.time() - start)) return themes
至此源test.py 文件可以运行成功!!!!!!!!!!!!!!!- main() 函数加入其它函数,跑出 主题色:
def OQvs(): imgs = map(lambda i: 'imgs/photo%s.jpg' % i, range(1,5)) pixDatas = list(map(getPixData, imgs)) maxColor = 7 themes = [testOQ(pixDatas, maxColor)] imgPalette(pixDatas, themes, ["OQ Palette"]) def kmvs(): imgs = map(lambda i: 'imgs/photo%s.jpg' % i, range(1,5)) pixDatas = list(map(getPixData, imgs)) maxColor = 7 themes = [testKmeans(pixDatas, maxColor), testKmeans(pixDatas, maxColor, False)] imgPalette(pixDatas, themes, ["KMeans Palette", "KMeans DIY"])def MMCQvs(): imgs = map(lambda i: 'imgs/photo%s.jpg' % i, range(1,5)) pixDatas = list(map(getPixData, imgs)) maxColor = 7 themes = [testMMCQ(pixDatas, maxColor)] imgPalette(pixDatas, themes, ["MMCQ Palette"]) def vs(): imgs = map(lambda i: 'imgs/photo%s.jpg' % i, range(1,5)) pixDatas = list(map(getPixData, imgs)) maxColor = 7 themes = [testMMCQ(pixDatas, maxColor), testOQ(pixDatas, maxColor), testKmeans(pixDatas, maxColor)] imgPalette(pixDatas, themes, ["MMCQ Palette", "OQ Palette", "KMeans Palette"])if __name__ == '__main__': testColorSpace() # testMMCQ() # print(testKmeans([getPixData()], 7, False)) # print(testKmeans([getPixData()], 7)) # correct code begin kmvs() MMCQvs() vs()
- error: pale[y,:,:] = np.array(theme[int(y / ph)], dtype=np.uint8) IndexError: list index out of range
- 解决办法:修改test.py 文件中的 imgPalette(imgs, themes, titles) 函数,修改如下
def imgPalette(imgs, themes, titles): N = len(imgs) fig = plt.figure() gs = gridspec.GridSpec(len(imgs), len(themes)+1) print(N) for i in range(N): print(i) im = fig.add_subplot(gs[i, 0]) im.imshow(imgs[i]) im.set_title("Image %s" % str(i+1)) im.xaxis.set_ticks([]) im.yaxis.set_ticks([]) t = 1 for themeLst in themes: theme = themeLst[i] pale = np.zeros(imgs[i-1].shape, dtype=np.uint8) h, w, _ = pale.shape ph = h / len(theme) for y in range(h): pale[y,:,:] = np.array(theme[int(y / ph)-1], dtype=np.uint8) pl = fig.add_subplot(gs[i, t]) pl.imshow(pale) pl.set_title(titles[t-1]) pl.xaxis.set_ticks([]) pl.yaxis.set_ticks([]) t += 1 plt.show()
阅读全文
0 0
- 图像主题色 代码 --code, Windows
- 图像主题色提取算法
- Pycharm WarmNeon主题看不到代码折叠按键(Code Folding)
- 图像分割评价标准 代码 (Image segmentation evaluation metrics code)
- VS Code 插件 主题 快捷键
- python sharing your code windows下分享你的代码
- 代码code
- Windows Vista主题风格
- Windows主题手动破解
- windows主题SLeopard
- windows主题方面
- Windows 8 经典主题
- Windows Phone 主题资源
- windows 主题壁纸更换
- 【Windows】win8.1主题
- Windows Phone 7 截取当前屏幕保存图像的代码
- windows store app C#读写图像的完整代码
- 设置iphone主题 代码
- 实现自己的http server(转载)
- 指针的指针
- 值传递、指针传递、引用传递…
- open和fopen的区别:(怎样获取文件…
- strlen和sizeof的区别
- 图像主题色 代码 --code, Windows
- vimrc配置
- 指针或引用做为返回值
- ConcurrentHashMap从jdk1.7到jdk1.8的变化
- strcmp和stricmp、strcmpi三…
- C语言中printf(),sprintf(),scan…
- 在Windows下编译OpenCV2.4.6
- opencv在windows7 vs20…
- #include<>和#include""的区别(转…