我想将python opencv图像转换为QPixmap.
我按照指示显示页面链接,我的代码附在下面
img = cv2.imread('test.png')[:,:,::1]/255.
imgDown = cv2.pyrDown(img)
imgDown = np.float32(imgDown)
cvRGBImg = cv2.cvtColor(imgDown, cv2.cv.CV_BGR2RGB)
qimg = QtGui.QImage(cvRGBImg.data,cvRGBImg.shape[1], cvRGBImg.shape[0], QtGui.QImage.Format_RGB888)
pixmap01 = QtGui.QPixmap.fromImage(qimg)
self.image01TopTxt = QtGui.QLabel('window',self)
self.imageLable01 = QtGui.QLabel(self)
self.imageLable01.setPixmap(pixmap01)
Run Code Online (Sandbox Code Playgroud)
代码没有编译和运行时错误,但转换错误,我只是得到一些噪声图像.我不确定问题是什么.有人可以帮忙吗?
我目前正在开展一个项目,通过使用SIFT/SURF从两个图像恢复相机6-DOF-Pose.在OpenCV的旧版本中,我使用findFundamentalMat来查找基本矩阵,然后通过已知的相机内部K进一步得到基本矩阵,并最终通过矩阵分解得到R和t.结果非常敏感和不稳定.
我看到有些人在这里有同样的问题 OpenCV findFundamentalMat非常不稳定和敏感
有人建议应用Nister的5点算法,该算法已在最新版本的OpenCV3.0中实现.
我已经阅读了OpenCV文档中的示例
在示例中,它使用focal = 1.0
和Point2d pp(0.0, 0.0)
.这是相机的真实焦距和原理点吗?单位是什么?在像素?还是实际尺寸?我无法理解这两个参数.我认为这两个参数应该从校准程序中获取,对吗?
对于我目前的相机(VGA模式),我使用Matlab Camera Calibrator来获取这两个参数,这些参数都是
Focal length (millimeters): [ 1104 1102]
Principal point (pixels):[ 259 262]
Run Code Online (Sandbox Code Playgroud)
所以,如果我想使用我的相机参数,我是否需要直接填写这些值?或者将它们转换为实际尺寸,如毫米?
此外,我得到的翻译结果看起来像一个方向而不是实际大小,有什么方法可以得到实际的大小翻译而不是方向?
任何帮助表示赞赏.
我想查找给定图像的山脊。(边缘没有边缘!)示例如下图所示
我认为Hessian矩阵会直观地工作。因此,我从2D-高斯方程开始对Hessian矩阵内核进行了硬编码,如下所述。 如何构建2D粗麻布矩阵内核
我使用surf
可视化的方法创建了3个二阶导数内核(D_xx,D_yy和D_xy),它们看上去都是正确的。
然后,我应用了这些内核并对图像进行了2D卷积。
我不确定下一步该怎么做,是否需要使用D_xx,D_yy和D_xy来表示特征值和向量?我们如何通过对每个像素进行2×2矩阵的特征分析来从图像中提取出棱线?任何想法,公式甚至代码都将大有帮助。
附带的代码生成二维Hessian矩阵
[x y]=meshgrid(round(-N/2):round(N/2), round(-N/2):round(N/2));
common = x.^2+y.^2;
Lxx = ((-1+x.^2/(sigma^2)).*exp(-common/(2*sigma^2))) / (2*pi*sigma^4);
Lxx = Lxx./ sum(Lxx(:));
Lyy = ((-1+y.^2/(sigma^2)).*exp(-common/(2*sigma^2))) / (2*pi*sigma^4);
Lyy = Lyy./ sum(Lyy(:));
Lxy = ((x.*y)/(2*pi*sigma^6)).*exp(-common/(2*sigma^2));
Lxy = Lxy./ sum(Lxy(:));
Run Code Online (Sandbox Code Playgroud) 我在直方图中有一个具有多元高斯分布的图像。我想将图像分割为两个区域,以便它们都可以遵循正态分布,如直方图中显示的红色和蓝色曲线。我知道高斯混合模型可能适用于此。我尝试使用 fitgmdist 函数,然后将两部分聚类,但仍然无法正常工作。任何建议将不胜感激。
下面是我的方法的 Matlab 代码。
% Read Image
I = imread('demo.png');
I = rgb2gray(I);
data = I(:);
% Fit a gaussian mixture model
obj = fitgmdist(data,2);
idx = cluster(obj,data);
cluster1 = data(idx == 1,:);
cluster2 = data(idx == 2,:);
% Display Histogram
histogram(cluster1)
histogram(cluster2)
Run Code Online (Sandbox Code Playgroud) 我想使用python版本的opencv函数Rodrigues()将旋转矩阵转换为旋转向量。要转换的 rotMat 为
[[ 0.59966056 -0.59966056 0.52991926]
[ 0.70710678 0.70710678 0. ]
[-0.37470951 0.37470951 0.8480481 ]]
Run Code Online (Sandbox Code Playgroud)
我写的代码是这样的
rotVec = np.zeros((1, 3), np.float32)
cv2.Rodrigues(rotMat, rotVec)
Run Code Online (Sandbox Code Playgroud)
opencv ×3
matlab ×2
python ×2
c++ ×1
convolution ×1
gaussian ×1
matlab-cvst ×1
qimage ×1
qt ×1
rotation ×1