我刚开始使用OpenCV。我下载了OpenCV 2.4.9,并安装了MSVS 2010.我的Windows是X64。我按照以下步骤操作:
一个。在“配置属性”下,单击“调试” - >环境和复制粘贴:PATH = C:\ opencv \ build \ x86 \ vc10 \ bin
湾VC ++目录 - >包含目录并添加条目:C:\ opencv \ build \ include
℃。 VC ++目录 - >库目录并添加条目:C:\ opencv \ build \ x86 \ vc10 \ lib
d。链接器 - >输入 - >其他依赖项并添加以下内容:
opencv_calib3d249.lib; opencv_contrib249.lib; opencv_core249.lib; opencv_features2d249.lib; opencv_flann249.lib; opencv_gpu249.lib; opencv_nonfree249.lib; opencv_highgui249.lib; opencv_imgproc249.lib; opencv_legacy249.lib; opencv_ml249.lib; opencv_objdetect249.lib ; opencv_ts249.lib; opencv_video249.lib;
我运行了以下代码:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
// read an image
cv::Mat image= cv::imread("img.jpg");
// create image window named "My Image"
cv::namedWindow("My Image");
cv::waitKey(1000);
// show the image on window
cv::imshow("My Image", image);
// wait key for 5000 ms
cv::waitKey(50);
return 1;
}
要收到错误:
BTP1.exe中0x76d2b727处的未处理异常:Microsoft C ++异常:cv ::内存位置0x003af414的异常
我认为这可能是因为X64和x86不匹配。在更改条目时。到PATH = C:\ opencv \ build \ x64 \ vc10 \ bin和c。到C:\ opencv \ build \ x64 \ vc10 \ lib,我收到以下错误:
应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。
有关如何解决此问题的任何提示?
答案 0 :(得分:3)
解决了这个问题。在一些修补,我发现该程序在Release模式下运行,而不是Debug模式。
附加依赖项存在问题。没有添加相同的Debug版本。 (XYZ249d.lib)
答案 1 :(得分:2)
这可能是因为您尝试显示的图像为空,可能是因为图像不在右侧文件夹中。要确认这一点,请将代码更改为
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream> // std::cout
int main() {
// read an image
cv::Mat image= cv::imread("img.jpg");
// add the following lines
if(image.empty())
std::cout << "failed to open img.jpg" << std::endl;
else
std::cout << "img.jpg loaded OK" << std::endl;
... // the rest of your code
答案 2 :(得分:0)
要添加到其他答案中,通常是在将彩色图像传递到需要灰度图像(即单通道)的工具中时发生的。
您可以使用以下代码将其转换为灰度:
cv::Mat img_gray;
cv::cvtColor(img_color, img_gray, cv::COLOR_BGR2GRAY);
您可以使用以下代码提取并合并各个颜色通道:
cv::Mat img_bgr[3];
cv::split(img_color, img_bgr);
//Note: OpenCV uses BGR color order
//img_bgr[0] = blue channel
//img_bgr[1] = green channel
//img_bgr[2] = red channel
cv::Mat img_gray = img_bgr[2] - img_bgr[1]; //laser line extraction is typically red channel minus green channel
答案 3 :(得分:-1)
我有一个类似的问题,我只需要提供图像文件的路径 例如 - D:\ image.png