我写了一个简单的opencv程序,它可以减少图像的噪音。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('stream/horse.png')
dst = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21)
cv2.imshow(dst)
plt.subplot(121), plt.imshow(img)
plt.subplot(122), plt.imshow(dst)
plt.show()
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,它给出了错误。这是...
OpenCV Error: Bad argument (Type of input image should be CV_8UC3 or CV_8UC4!) in fastNlMeansDenoisingColored, file /home/govinda/github_repos/opencv/modules/photo/src/denoising.cpp, line 176
Traceback (most recent call last):
File "/home/govinda/workspace-python/opencv/src/Smle.py", line 7, in <module>
dst = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21)
cv2.error: /home/govinda/github_repos/opencv/modules/photo/src/denoising.cpp:176: error: (-5) Type of input image should be …Run Code Online (Sandbox Code Playgroud) 这里我创建了一个生产者-客户程序,父进程(生产者)创建了许多子进程(消费者)?然后父进程读取文件并将数据传递给子进程。
但是,这里出现了一个性能问题,在进程之间传递消息花费了太多时间?我认为?。
例如,一个200MB 的原始数据,父进程读取和预处理将花费不到8秒,而不是仅通过多进程将数据传递给子进程。管道将花费另外8秒,子进程完成剩余的工作只花费另外3 到 4秒。
所以,一个完整的工作流程花费不到 18 秒,进程之间通信的时间成本超过 40%,这比我想象的要大得多,我尝试了多进程。队列和经理,他们更糟。
我使用 windows7/Python3.4。我用谷歌搜索了几天,POSH 可能是一个很好的解决方案,但它不能用 python3.4 构建
我有 3 种方法:
1.有没有什么办法可以在Python3.4的进程之间直接共享python对象?作为 POSH
或者
2.是否可以将对象的“指针”传递给子进程并且子进程可以恢复指向python对象的“指针”?
或者
3.multiprocess.Array 可能是一个有效的解决方案,但如果我想共享复杂的数据结构,例如列表,它是如何工作的?我应该在它的基础上创建一个新类并提供接口作为列表吗?
Edit1:
我尝试了第三种方式,但效果更糟。
我定义了这些值:
p_pos = multiprocessing.Value('i') #producer write position
c_pos = multiprocessing.Value('i') #customer read position
databuff = multiprocess.Array('c',buff_len) # shared buffer
Run Code Online (Sandbox Code Playgroud)
和两个功能:
send_data(msg)
get_data()
Run Code Online (Sandbox Code Playgroud)
在send_data函数(父进程)中,它将 msg 复制到 databuff ,并通过管道将开始和结束位置(两个整数)发送到子进程。
比在get_data函数(子进程)中,它接收两个位置并从 databuff 复制 msg。
最后,它比使用管道 @_@ …
我正在尝试通过张量流对象检测API训练自定义数据集。数据集包含numpy ndarray格式(uint8)的40k训练图像和标签。训练数据集shape = 2([40000,23456])且标签shape = 1([0 ...,3])。我想为此数据集生成tfrecord。我怎么做?我不喜欢tensorflow。
我正在尝试使用 tensorflow 对象检测 api 训练自定义对象检测模型。出于训练目的,我使用腌制图像数据集进行训练,并作为我使用的模型ssd_mobilenet_v1_coco。当我开始训练时,它给了我这个错误。
Traceback (most recent call last):
File "train.py", line 184, in <module>
tf.app.run()
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/app.py", line 126, in run
_sys.exit(main(argv))
File "train.py", line 180, in main
graph_hook_fn=graph_rewriter_fn)
File "/content/models/research/object_detection/trainer.py", line 381, in train
init_saver = tf.train.Saver(available_var_map)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/saver.py", line 1338, in __init__
self.build()
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/saver.py", line 1347, in build
self._build(self._filename, build_save=True, build_restore=True)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/saver.py", line 1372, in _build
raise ValueError("No variables to save")
ValueError: No variables to save
Run Code Online (Sandbox Code Playgroud)
完整的错误代码可以在这里找到...
[https://gist.github.com/mpgovinda/1f59f7de7873f6ec4c4426b79dc6827a][1]
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
tensorflow python-3.6 object-detection-api google-colaboratory
python-3.x ×2
tensorflow ×2
numpy ×1
opencv ×1
performance ×1
python ×1
python-3.6 ×1
tfrecord ×1
ubuntu ×1