我在谷歌或stackoverflow上检查其他问题,他们正在谈论在脚本中运行cv2.imshow,但我的代码在jupyter笔记本中运行.
这是我的配置:
ubuntu 16.4x64
python 3.5
opencv 3.1.0
我启动了一个jupyter笔记本:这是我把它放在笔记本上的代码:
%pylab notebook
import cv2
cvim2disp = cv2.imread('data/home.jpg')
cv2.imshow('HelloWorld', cvim2disp)
cv2.waitKey() #image will not show until this is called
cv2.destroyWindow('HelloWorld') #make sure window closes cleanly
Run Code Online (Sandbox Code Playgroud)
当我执行这些代码.图像将显示在弹出窗口中,但是我无法通过单击右上角的x关闭此窗口,片刻之后,系统会提示我窗口没有响应,它会给我2个选择:等待","退出".如果我点击等待,那么它将在稍后显示相同的提示,如果我点击'fore quit',那么jupyter笔记本内核会死掉,我必须重新开始.
我谷歌周围,许多解决方案建议我应该添加此代码
cv2.startWindowThread()
Run Code Online (Sandbox Code Playgroud)
之前imshow,但情况变得更糟,内核永远挂起!任何人都知道发生了什么.
我想使用OpenCV 将类型的图像转换CV_64FC1为CV_8UC1Python.
在C++中,使用convertTo函数,我们可以使用以下代码片段轻松转换图像类型:
image.convertTo(image, CV_8UC1);
Run Code Online (Sandbox Code Playgroud)
我在互联网上搜索但无法找到任何没有错误的解决方案.Python OpenCV中的任何函数都可以转换它吗?
我希望在显示器上执行光学字符识别(OCR),并希望程序在不同的光照条件下工作.为此,我需要处理和阈值图像,使每个数字周围没有噪声,允许我检测数字的轮廓并从那里执行OCR.我需要使用的阈值适应这些不同的光照条件.我尝试过自适应阈值处理,但我无法让它工作.
我的图像处理很简单:加载图像(i),灰度i(g),将直方图均衡应用于g(h),并将二进制阈值应用于阈值= t的h.我已经使用了几个不同的数据集,并发现使OCR工作的最佳阈值一致地位于(h)的直方图中的最高密度范围内(没有间隙的图的唯一部分).![直方图(h). 值t = [190,220]对于OCR是最佳的](https://i.imgur.com/6QWtZNA.png)
直方图(h).值t = [190,220]对于OCR是最佳的.可以在此处找到描述我的问题的更完整的图像集:http://imgur.com/a/wRgi7
我当前的解决方案,但有点笨拙和缓慢,检查:
1. There must be 3 digits
2. The first digit must be reasonably small in size
3. There must be at least one contour recognized as a digit
4. The digit must be recognized in the digit dictionary
Run Code Online (Sandbox Code Playgroud)
除非所有案例都被接受,否则阈值将增加10(从较低值开始)并再次尝试.
我可以识别(h)直方图上的最佳阈值这一事实可能只是确认偏差,但我想知道是否有一种方法可以提取该值.这与我之前使用直方图的方式不同,后者更多的是寻找峰值/谷值.
我正在使用cv2进行图像处理,使用matplotlib.pyplot进行直方图.
我想用 0 值替换图像 (Mat) 的矩形部分。我的图像有 1000 行和 1500 列。我想在 (890,1340) 处遮盖宽度为 150、高度为 100 的补丁。为此,我使用以下代码片段:
cv::Rect patch;
patch.y = 890;
patch.x = 1340;
patch.height = 100;
patch.width = 150;
image(patch) = 0;
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
OpenCV 错误:输入参数的大小不匹配(该操作既不是“数组操作数组”(其中数组具有相同的大小和相同的通道数),也不是“数组操作标量”,也不是“标量操作数组”) cv::arithm_op,文件 C:\build\master_winpack-build-win64-vc14\opencv\modules\core\src\arithm.cpp,第 659 行
我已经更改了 Rect patch 的 x 和 y 坐标,但仍然出现相同的错误。我在互联网上搜索,但我仍然对 Rect 参数感到困惑。
Rect x,y 是否代表(列,行)或(行,列)?
我在带有pi相机的Raspberry Pi上运行以下代码,我有它的broadcom驱动程序,但是我收到了一个错误.也许与视频源的尺寸有关,但我不知道如何在Linux上设置它.
码:
import cv2
import numpy as np
cap = cv2.VideoCapture()
while True:
ret, img = cap.read()
cv2.imshow('img', img)
if cv2.waitKey(0) & 0xFF == ord('q):
break
Run Code Online (Sandbox Code Playgroud)
错误:
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow,
file /home/pi/opencv-3.3.0/modules/highgui/src/window.cpp, line 325
Traceback (most recent call last):
File "check_picam_with_opencv.py", line 10, in <module>
cv2.imshow('img', img)
cv2.error: /home/pi/opencv-3.3.0/modules/highgui/src/window.cpp:325: error:
(-215) size.width>0 && size.height>0 in function imshow
Run Code Online (Sandbox Code Playgroud)