小编Aru*_*mar的帖子

OpenCV4 错误:'CV_CAP_PROP_FRAME_WIDTH' 未在此范围内声明

我最近在我的 Ubuntu 18.04 LTS 上从 OpenCV3.3 迁移到了最新版本的 OpenCV4。我在安装过程中遇到了一些持续的问题。当我按照安装教程进行安装时,我的安装没有出现任何错误。但是每当我opencv2/highgui.hpp在我的项目中包含该模块时,我都会遇到如下问题。当我点击链接时,这似乎是由 highgui.hpp 引起的问题。

/home/arun/Documents/AutonomousLaneDetection/app/main.cpp: In function ‘int main(int, char**)’:
/home/arun/Documents/AutonomousLaneDetection/app/main.cpp:118:36: error: ‘CV_CAP_PROP_FRAME_WIDTH’ was not declared in this scope
 int videoWidth = videofile.get(CV_CAP_PROP_FRAME_WIDTH);
                                ^~~~~~~~~~~~~~~~~~~~~~~
/home/arun/Documents/AutonomousLaneDetection/app/main.cpp:119:37: error: ‘CV_CAP_PROP_FRAME_HEIGHT’ was not declared in this scope
 int videoHeight = videofile.get(CV_CAP_PROP_FRAME_HEIGHT);
                                 ^~~~~~~~~~~~~~~~~~~~~~~~
/home/arun/Documents/AutonomousLaneDetection/app/main.cpp:123:27: error: ‘CV_FOURCC’ was not declared in this scope
                       CV_FOURCC('M', 'J', 'P', 'G'), 10,
                       ^~~~~~~~~
/home/arun/Documents/AutonomousLaneDetection/app/main.cpp:123:27: note: suggested alternative: ‘CV_BLUR’
                       CV_FOURCC('M', 'J', 'P', 'G'), 10,
                       ^~~~~~~~~
                       CV_BLUR
Run Code Online (Sandbox Code Playgroud)

opencv highgui opencv4

6
推荐指数
1
解决办法
1万
查看次数

将关键点转换为mat或将它们保存到文本文件opencv

我已经在(opencv开源)中提取了SIFT功能,并将它们提取为关键点.现在,我想将它们转换为Matrix(带有x,y坐标)或将它们保存在文本文件中......

在这里,您可以看到用于提取关键点的示例代码,现在我想知道如何将它们转换为MAT或将它们保存在txt,xml或yaml中......

cv::SiftFeatureDetector detector;
std::vector<cv::KeyPoint> keypoints;
detector.detect(input, keypoints);
Run Code Online (Sandbox Code Playgroud)

c++ opencv vector keypoint mat

5
推荐指数
1
解决办法
7871
查看次数

在 C++ 中旋转图像而不使用 OpenCV 函数

描述:- 我试图在不使用 C++ 中的 OpenCV 函数的情况下旋转图像。旋转中心不必是图像的中心。它可能是一个不同的点(从图像中心偏移)。到目前为止,我遵循了各种来源来进行图像插值,并且我知道有一个来源可以在 MATLAB 中完美地完成这项工作。我试图在没有 OpenCV 函数的 C++ 中模仿相同的内容。但我没有得到预期的旋转图像。相反,我的输出在屏幕上看起来像一条小的水平线。

void RotateNearestNeighbor(cv::Mat src, double angle) {
int oldHeight = src.rows;
int oldWidth = src.cols;
int newHeight = std::sqrt(2) * oldHeight;
int newWidth = std::sqrt(2) * oldWidth;
cv::Mat output = cv::Mat(newHeight, newWidth, src.type());
double ctheta = cos(angle);
double stheta = sin(angle);

for (size_t i = 0; i < newHeight; i++) {
    for (size_t j = 0; j < newWidth; j++) {

        int oldRow = static_cast<int> ((i - …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image rotation nearest-neighbor

4
推荐指数
1
解决办法
1529
查看次数

C++:创建独特的随机分布 1000 次,任何分布中都没有重复的数字

问题:

我的数字范围是 1 到 20,000。我想对范围内 8 个不同数字的均匀分布进行 1000 次采样。每个分布不应有重复的数字。此外,1000 个分布中的每个分布都必须是唯一的(在对所有获得的分布进行字母顺序排序后,从技术上讲,没有两个分布应该具有相同的数字序列)。

我做了什么:

我遇到了std::uniform_int_distribution<int>C++ 11 标准。因此尝试以下代码来测试其在不同范围内的唯一性。

#include <iostream>
#include <random>

int main(int, char*[]) {
    const int range_from  = 0;
    const int range_to    = 20000;
    std::random_device                  rand_dev;
    std::mt19937                        generator(rand_dev());
    std::uniform_int_distribution<int>  distr(range_from, range_to);

    for(int i = 0; i < 1000; ++i){ //Iteration for maximum distributions

        for (int j = 0; j < 8; ++j) //Iteration for random distribution generation
            std::cout << distr(generator) << '\n';
    }
}
Run Code Online (Sandbox Code Playgroud)

不同尝试获得的输出

Attempt 1:      Attempt 2:

16102 …
Run Code Online (Sandbox Code Playgroud)

c++ random distribution unique range

1
推荐指数
1
解决办法
938
查看次数

if语句如何简化?

我正在使用CLion IDE编码我的C ++项目。有时候,IDE会比我更聪明,并给我一些建议。在代码检查过程中(CLion),我遇到一个简单的问题。它说以下代码可以简化,即使我认为这是我能想到的最简单的形式:

代码:

    if (node.first >= 0 && node.first <= 45 &&
    node.second >= 0 && node.second <= 30)
    return true;
    else
    return false;
Run Code Online (Sandbox Code Playgroud)

假设节点的类型 std::pair<int, int>

我从CLion IDE获得的建议如下:

代码检查注释:

Inspection info: This inspection finds the part of the code that can be simplified, e.g. constant conditions, identical if branches, pointless boolean expressions, etc.
Run Code Online (Sandbox Code Playgroud)

您认为这可以进一步简化吗?

c++ if-statement code-inspection conditional-statements std-pair

1
推荐指数
1
解决办法
152
查看次数

GMock:错误:无法将“cv::MatExpr”转换为“bool”作为回报

上下文: 我正在尝试使用 GMock 模拟 OpenCV-C++ 类。

问题 :

我无法将 EXPECT_CALL 方法用于接受 cv::Mat 并返回 cv::Mat 的函数。编译器说 gmock-matcher不能从 cv::MatExpr 转换为 bool 作为 return

以下是编译时的详细错误信息。

In file included from /home/arun/Documents      /LaneDetection/test/../vendor/googletest/googlemock/include/gmock/gmock-spec-builders.h:75:0,
             from /home/arun/Documents/LaneDetection/test/../vendor/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h:43,
             from /home/arun/Documents/LaneDetection/test/../vendor/googletest/googlemock/include/gmock/gmock.h:61,
             from /home/arun/Documents/LaneDetection/test/test.cpp:32:
/home/arun/Documents/LaneDetection/test/../vendor    /googletest/googlemock/include/gmock/gmock-matchers.h: In instantiation of ‘bool     
testing::internal::AnyEq::operator()(const A&, const B&) const [with A = cv::Mat; B = cv::Mat]’:
/home/arun/Documents/LaneDetection/test/../vendor/googletest/googlemock/include/gmock/gmock-matchers.h:908:18:   
required from ‘bool testing::internal::ComparisonBase<D, Rhs, Op>::Impl<Lhs>::MatchAndExplain(Lhs, testing::MatchResultListener*) const [with Lhs = cv::Mat; D = testing::internal::EqMatcher<cv::Mat>; Rhs = cv::Mat; Op = testing::internal::AnyEq]’
/home/arun/Documents/LaneDetection/test/test.cpp:77:39:   required from here …
Run Code Online (Sandbox Code Playgroud)

c++ opencv unit-testing googletest gmock

0
推荐指数
1
解决办法
1076
查看次数